SELECT organizations_organization.code as organization,
core_user.email as Created_By,
assinees.email as Assigned_To,
from tickets_ticket
JOIN organizations_organization on tickets_ticket.organization_id = organizations_organization.id
JOIN core_user on tickets_ticket.created_by_id = core_user.id
Left JOIN core_user as assinees on assinees.id = tickets_ticket.currently_assigned_to_id
在上面的查询中,如果tickets\u ticket.currently\u assigned \u to \u id为null,则不会返回tickets\u ticket中的那一行
> Records In tickets_ticket = 109
> Returned Records = 4 (out of 109 4 row has value for currently_assigned_to_id rest 105 are null )
> Expected Records = 109 (with nulll set for Assigned_To)
注意,我试图在同一个表上实现多个连接
2条答案
按热度按时间mdfafbf11#
左连接不能杀死输出记录,您的问题是:
此联接将删除不匹配的记录,请重试
oalqel3c2#
首先,这不是您正在运行的实际代码。前面有一个逗号
from
会导致语法错误的子句。如果你漏掉了一个where
子句,那么这就解释了为什么看不到行。使用时
left join
s、 第一张table上的条件where
条款。下表中的条件on
条款。也就是说,一个
where
条款可能不是问题所在。我建议使用left join
从第一个表开始的s—以及表别名:我怀疑您的数据模型中有出乎意料的数据——可能是坏的组织,可能是坏的
created_by_id
. 保留所有的票,看看少了什么。也就是说,你应该包括
tt.id
在结果集中标识特定的票证。