LEFT JOIN使不同选择如果为空

时间:2014-02-25 14:08:16

标签: php mysql

我正在两个表之间进行LEFT JOIN。

SELECT *
FROM ".T_STAFF_ROLE." AS sr
LEFT JOIN ".T_STAFF_SCHEDULE." AS ss 
ON sr.id = ss.staff_role_id
WHERE ss.client_booking_id=".$id_booking; 

T_STAFF_ROLE为10个条目,所有条目/功能都不同。这个数字是固定的。

我希望如果Select返回为空,因为没有分配给特定$id_booking的人,无论如何都要从sr返回角色/函数列表,即使是空值/空值。

2 个答案:

答案 0 :(得分:1)

那是因为WHERE会过滤非空值。将条件放入ON

SELECT *
FROM ".T_STAFF_ROLE." AS sr
LEFT JOIN ".T_STAFF_SCHEDULE." AS ss 
ON sr.id = ss.staff_role_id 
AND ss.client_booking_id=".$id_booking; 

- 由于NULL

,这将强制添加匹配的行,即使它是LEFT JOIN

答案 1 :(得分:1)

试试这个..

SELECT *
FROM ".T_STAFF_ROLE." AS sr
LEFT JOIN ".T_STAFF_SCHEDULE." AS ss 
ON ( sr.id = ss.staff_role_id AND ss.client_booking_id=" . $id_booking . ")