2

次のテーブルがあったとします

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 番)

4

2 に答える 2