2011-07-12 10 views
1

私はこれを正しく説明したいと思います。私が持っているものMySQLクエリ - 他のテーブルにはない人を取得していますか?

SELECT * FROM classesbooked 
JOIN name ON NameNo = classesbooked_nameno 
Group By classesbooked_nameno 

は、このクラスを予約した人の名前をすべて私を取得します。..このクエリです。私が望むのは反対です。テーブル '名前'にはいるがテーブル 'クラスには登録されていない'すべての人々は予約済みです

答えて

2

左結合を使用し、2番目のテーブルの結合列がnullのレコードを選択します。

select * 
from name n 
    left join classesbooked c on n.NameNo = c.classesbooked_nameno 
where c.classesbooked_nameno is null 
+0

ふうに、私は誰もがもうLEFT JOIN' 'について知っていることを心配してきた:) –

1

あなたはこれを実現することができる方法の一つは、サブクエリである:

SELECT * 
FROM name 
WHERE NameNo NOT IN (
         SELECT 
          classesbooked_nameno 
         FROM classesbooked 
        ) 

基本的にこれはclassesbooked

1

に関連したIDを持っていないテーブルnameのすべてを返すように言って、これを試してみてください。

0
SELECT * 
FROM name 
    LEFT JOIN classesbooked 
    ON NameNo = classessbooked_nameno 
WHERE classesbooked_nameno IS NULL