2

次のテーブルがあるとしましょう

Table names
id | name
1  | mike
2  | john
3  | jack

Table attributes
name_id | skill
1 | css
1 | html
1 | php
2 | html
2 | java
2 | css
3 | java

たとえば、css 属性や html 属性を持つすべての ID と名前を取得する必要があります。「JOIN」を使用してみましたが、検索する属性の数が異なる場合があります。

何を試せばいいのかわからないので、まだ何も試していません。

ありがとうございました

4

2 に答える 2

4

GROUP BY ...を使用してみてくださいHAVING COUNT(DISTINCT ...)

SELECT name_id
FROM attributes
WHERE skill IN ('css', 'html')
GROUP BY name_id
HAVING COUNT(DISTINCT skill) = 2

オンラインで動作することを確認してください:sqlfiddle

参加して名前を取得することもできます。

于 2012-09-26T10:35:32.507 に答える
3
select names.id, names.name
from
    names
        inner join 
    attributes
        on names.id = attributes.name_id
where skill in ('css','html')
group by names.id, names.name
having count(distinct skill) = 2 -- where 2 is the number of skills you are looking for
于 2012-09-26T10:35:16.360 に答える