我正在修改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%'
只要“ tblguardians”表中有一个条目,该查询就可以正常工作,但是如果没有记录,则LEFT JOIN返回NULL- 因此,当我遍历PHP中的结果时,不会返回该条目。
有没有一种方法可以从“ tblcases”返回字段,而无论“ tblguardians”是否有关联的结果?我想我已经读了太多的Google页面,以获取更多信息!
在您的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%'