http://q.hatena.ne.jp/1412053897

上記で質問した続編になりますが、スキルにjavaのみもっていて、phpが持っている人は除く愛は、つまり、javaとphp両方持つ人は除いて、javaのみ持つ人を抽出する形です。

回答で教えていただいたSQLを参考にすると、
総当りの結合なので、以下のようにすればよいですかね。

SELECT T1.username AS javaphpuser FROM (SELECT username FROM user WHERE skill = 'java') T1,(SELECT username FROM user WHERE skill != 'php') T2 WHERE T1.username = T2.username

お手数をお掛けしますが何卒よろしくお願い致します。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2014/10/02 22:43:42
id:yayayai

select username from t_user where skill = 'java'

minus

(SELECT T1.username FROM (SELECT username FROM t_user WHERE skill = 'java') T1,(SELECT username FROM t_user WHERE skill = 'php') T2 WHERE T1.username = T2.username)

ああ、↑が思いつきました。

ベストアンサー

id:sasada No.1

回答回数1482ベストアンサー獲得回数133

 上の例で良いと思いますよ。
 ただし、最初の例でskillにNULL値があるようでしたら

SELECT T1.username AS javaphpuser FROM (SELECT username FROM user WHERE skill = 'java') T1,(SELECT username FROM user WHERE (skill != 'php') or (skill is null) T2 WHERE T1.username = T2.username

とした方が良いかもしれませんね。

id:yayayai

ありがとうございます!!!

2014/10/02 22:43:31

その他の回答0件)

id:sasada No.1

回答回数1482ベストアンサー獲得回数133ここでベストアンサー

 上の例で良いと思いますよ。
 ただし、最初の例でskillにNULL値があるようでしたら

SELECT T1.username AS javaphpuser FROM (SELECT username FROM user WHERE skill = 'java') T1,(SELECT username FROM user WHERE (skill != 'php') or (skill is null) T2 WHERE T1.username = T2.username

とした方が良いかもしれませんね。

id:yayayai

ありがとうございます!!!

2014/10/02 22:43:31

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません