次のテーブルがあったとします
user_table
id username
1 abc
2 def
3 ghij
courses_table
id title
1 csc
2 math
3 syn
user_courses
user_id course_id
2 1
1 3
2 3
コースを受講しているユーザー名を選択したい 1 AND 3 少なくとも 1 または 3 ではなく、1 と 3 の両方を意味する
次のmysqlクエリを試しました
SELECT DISTINCT u.* FROM user_table as u LEFT JOIN user_courses as uc ON uc.user_id = u.id WHERE uc.course_id = 1 AND uc.course_id=3;
SELECT DISTINCT u.* FROM user_table as u LEFT JOIN user_courses as uc ON uc.user_id = u.id WHERE uc.course_id IN (1,3);
SELECT DISTINCT u.* FROM user_table as u LEFT JOIN user_courses as uc ON uc.user_id = u.id WHERE uc.course_id IN (1,3) AND uc.user_id = u.id ;
1 番目と 3 番目のクエリは結果を表示せずに実行され、2 番目のクエリは、course_id が 1 または 3 以上のすべてのユーザーを表示します。
なぜ私が LEFT JOIN を使用しているのか疑問に思っている場合、これはテーブルの結果を結合する必要があるためです。上記のコード行は単なる例であり、LEFT 結合を使用して約 9 つのテーブルからデータを取得するために使用しています。
何か助けてください?ありがとう
SELECT DISTINCT u.* FROM user_table as u LEFT JOIN user_courses as uc ON uc.user_id = u.id WHERE uc.course_id IN( 1,3) AND uc.user_id = 2 ";
これは、私が望む結果、その出力 "def" を表示しますが、user_id を静的な値として使用することはできません (この例では 2 番)