MySQL LEFT JOIN - 值可以为NULL

Ada*_*yle 2 mysql sql join

我正在修改一个MySQL语句但是在LEFT JOIN和空行时遇到了一些麻烦.目前我有:

SELECT cs.case_id, cs.child_firstname, gu.*
FROM tblcases AS cs 
LEFT JOIN tblguardians AS gu
ON cs.case_id = gu.case_id 
WHERE cs.child_firstname = '%craig%' AND gu.firstname LIKE '%sally%'
Run Code Online (Sandbox Code Playgroud)

只要"tblguardians"表中有条目,此查询就可以正常工作,但如果没有记录,则LEFT JOIN返回NULL - 因此,当我在PHP中迭代结果时,不会返回该条目.

有没有办法从"tblcases"返回字段,无论"tblguardians"是否有相关结果?我想我已经阅读了太多的Google页面,以获取更多信息!

ber*_*nie 10

在WHERE子句中的连接表上放置条件有效地使加入INNER JOIN.
为避免这样做,您必须将第二个条件添加到LEFT JOIN:

 SELECT cs.case_id, cs.child_firstname, gu.*
   FROM tblcases cs 

        LEFT JOIN tblguardians gu
        ON cs.case_id = gu.case_id 
    AND gu.firstname LIKE '%sally%' /* <- this line was moved up from WHERE */

  WHERE cs.child_firstname = '%craig%' 
Run Code Online (Sandbox Code Playgroud)