【发布时间】:2016-01-16 15:28:31
【问题描述】:
我有两张表需要交叉并返回与其中一张的 id 一样多的结果。
第一个是角色/任务表:
id | rolename
---+---------
1 | check_in
2 | cleaning
3 | taxi
4 | guide
5 | car_rental
6 | meals
7 | house_owner
20 | custom
还有另一个包含这些列的表:
id | client_booking_id | staff_role_id | confirmed | staff_cost
我需要一个查询,它总是给我与第一个表中的 nr 列一样多的结果。因为对于每个唯一的client_booking_id,这些任务/角色中只有一个(如果有的话)。
如果我这样做:
SELECT sr.role_name, sr.id, ss.staff_cost, ss.confirmed
FROM staff_role AS sr
LEFT JOIN staff_schedule AS ss ON sr.id=ss.staff_role_id
我得到了我想要的 nr 行的结果。现在我需要将它与特定的client_booking_id 匹配,所以我做到了
SELECT sr.role_name, sr.id, ss.staff_cost, ss.confirmed
FROM staff_role AS sr
LEFT JOIN staff_schedule AS ss ON sr.id=ss.staff_role_id
WHERE ss.client_booking_id=1551 // <-- this is the new line
这只给了我 2 个结果,因为在第二张桌子上我只为 id 预订了 2 个任务。
但我需要所有任务的结果,即使是那些不匹配的任务,也需要 NULL 值。我该怎么做?
【问题讨论】: