对于除了在select语句中使用函数以外的两个以上的表,我真的对连接感到困惑!在连接中计算列
我有三个表users
,data
和projects
。 data
上的每一行与users
表的用户唯一相关,data
表的外键为uid
列,其中引用了的users
表。
到现在为止还不难吗?但我希望。
在projects
表中每个项目都有上users
表太id
列两个分别名为starter
和finisher
他们都列引用和彼此不同。
那么什么!我想获取包括其data
和数量projects
,他们开始它(如starter
)每个用户的数据或所有用户完成了它(为finisher
)
select
d . *,
u . *,
COUNT(p.starter) as starter,
COUNT(p.finisher) as finisher
from
users u
left join
projects p ON u.id = p.freelancer
left join
data d ON u.id = d.uid
GROUP BY (u.id)
此查询结果(如预期)谁已经是starter
或finisher
或什么也没有(projects
没有对应的行)但是计数结果不正确!例如ID为1
用户完成一个项目,并已开始的人,但结果表明两个starter
和finisher
列1
和1
!
'#1054 - '字段列表'中的未知列'p.starter' – revo
@revo。 。 。固定。 –
执行,但结果包括起始者和结束者计数的'1'!真正的结果应该是3''starter'和1''finisher' – revo