O.私はこれを2日間解決しようとしてきましたが、成功しませんでした。そのため、すべての作業が停止されました。
要点:
これらの3つのテーブルの間には多対多の関係があります。
Students
Students_Courses
Courses
どの学生が物理学と微積分学とCS101に登録されているかを正確に知る必要があります
彼らは他のコースに登録することができますが、私はそれらの3つのコースにどれが含まれているかを知る必要があります。
SELECT * FROM Students A
INNER JOIN Students_Courses B on A.id = B.student
INNER JOIN Courses C on B.course = C.id
WHERE C.name = Physics OR C.name = calculus OR C.name = cs101
しかし。これにより、これらのコースのいずれかに学生が戻ります。
WHERE句を次のように変更した場合:
WHERE C.name = Physics AND C.name = calculus AND C.name = cs101
3つすべてに一致する行がないため、何も返されません。
どうすればよいですか?私がここで見逃しているSQL理論は何ですか?SQLは行ごとに機能するので、行ごとのフィルタリングが必要です。しかし、これは一般的な質問であると確信しています。理論の名前や、それを解決するためにここで欠落しているものを見つけることができません。
これらすべてのコースを選択し、3つすべてに一致する学生をフィルタリングすることで解決しましたが、これはアプリケーションに含まれていたため、単一のSQLクエリである可能性があります。
よろしくお願いします。