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回まで
  • 13歳以上
  • 登録:2014/09/30 17:35:39
  • 終了: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

sasada回答回数1482ベストアンサー獲得回数1332014/10/01 02:26:23

 上の例で良いと思いますよ。
 ただし、最初の例で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

sasada回答回数1482ベストアンサー獲得回数1332014/10/01 02:26:23ここでベストアンサー

 上の例で良いと思いますよ。
 ただし、最初の例で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

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

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

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません