[英]LEFT JOIN NOT SHOW ALL LEFT JOIN ROWS
LEFT JOIN 應該顯示左表上的所有行,但是在運行以下查詢時,我只會獲得具有相同 id 的位置值。 請有人給我一些關於我可能出錯的地方的指導:
SELECT us.*, sp.date , k.kelas as nama_kelas
FROM gtech_tbl_user_siswa us
JOIN sekolah_tbl_kelas k ON k.id = us.kelas
LEFT OUTER JOIN gtech_tbl_absensi_siswa_pertemuan sp ON us.id = sp.id_user
WHERE sp.id_materi = 520
AND sp.id_sub_materi = 1206
提前致謝
您需要將當前出現在WHERE
子句中的右表上的條件移動到涉及該表的左連接的ON
子句中:
SELECT *
FROM gtech_tbl_user_siswa us
INNER JOIN sekolah_tbl_kelas k ON k.id = us.kelas
LEFT OUTER JOIN gtech_tbl_absensi_siswa_pertemuan sp
ON us.id = sp.id_user AND sp.id_materi = 520 AND sp.id_sub_materi = 1206;
您遇到的問題是由於WHERE
子句發生在左連接之后。 因此,即使您的左連接實際上確實避免了連接左側的不匹配記錄被過濾掉,但WHERE
子句稍后仍會刪除此類記錄。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.