我有卡片,时间表,用户。每个时间表都有用户和卡的外键。假设我有100张卡和2个用户,每个用户有10个时间表。我想要一组100张卡片加入10个用户的10个时间表。当我尝试将我的数据集限制为1个用户时,我最终只有10行。如何设置查询以实现我想要的目标?
答案 0 :(得分:0)
基本上你想要的东西是:
select *
from cards c
left join
(
select *
from schedules s
join users u on s.UserID = u.ID
where u.ID = 1
) x on c.ID = x.CardID
这样你的where子句就不会干扰左连接。您必须将列名更改为您正在使用的任何名称,并且可能会明确列出子查询中的列,因此不存在重叠列名称的任何问题。