私は2つのテーブル、1つの学生のリストと1つのレストランのリストを持っています。 peopleテーブルには、レストランテーブル内にFKとして格納されているPKがあります。レストランのテーブルには、学生がレストランで食事をしたい日と食事をするレストランがあります。私は月曜日にレストランで食べたくない学生を探しています。私は以下の質問を使ってみましたが、月曜日に外食していない学生ではなく、すべての学生をリストアップしています。MSのSQLのようなクエリ
SELECT DISTINCT SName
FROM Dinner AS D
INNER JOIN Student AS S ON D.SID = S.SID
WHERE DinnerDay NOT LIKE 'Monday'
GROUP BY SName
'where not exists'クエリの使用を検討してください。また、 'distinct'と' group by'の両方を使う必要はありません。どちらも一意の 'SName'を返します。 (sum、avgなど)を集計している場合は 'group by'を使い、一意の値を返すことだけに興味がある場合は' distinct'を使います。 – HoneyBadger
さて、以下しようとしたが、それは好きではないの構文をEXISTS:D INNERがDinnerDay、NOTは '月曜日' をEXISTS D.SID = S.SID ON学生AS S \tを結合としてディナーは異なるSNAME を選択 –
なぜ、 '好きではない'の代わりに '<>'を使用していませんか? NOT EXISTS構文が間違っています。あなたがまだ 'NOT LIKE'を使いたいなら、 'NOT LIKE' Monday% 'を使ってください。 – user6542823