我有两个连接同一个表的SQL查询的基本问题。这听起来很简单,但我有一些麻烦。我希望,任何人都可以帮我解决这个问题:)在一个查询中计数的同一个表上的多个连接
我有两个小表:“人”(列:id,name,...)和“likes”(id,who,who)。人们可以设置彼此的“喜欢”。这种关系是多方面的。 我想得到与人民喜欢的表:收到“喜欢”的数量,交付和相互喜欢的数量。 当我只使用一个连接时,所有的都是正确的。但是对于两个连接(或更多),MySQL将所有行组合(如预期的那样),并且计数中出现错误的值。我不知道,我必须如何在这种情况下使用count /总和/组,由运营商:(我想在一个查询做到不子查询
我用这样的查询:
SELECT *, count(l1.whom), count(l2.whom)
FROM people p
LEFT JOIN likes l1 ON l1.who = p.id
LEFT JOIN likes l2 ON l2.whom = p.id
GROUP BY p.id;
SELECT p.id, name,
count(lwho.who) delivered_likes,
count(lwhom.whom) received_likes,
count(lmut.who) mutual_likes
FROM people AS p
LEFT JOIN likes AS lwho ON p.id = lwho.who
LEFT JOIN likes AS lwhom ON lwhom.id = lwho.id
LEFT JOIN likes AS lmut ON lwhom.who = lmut.whom AND lwhom.whom = lmut.who
GROUP BY p.id;
但它喜欢计算不正确的计数。
这只是问题的训练和成绩并不重要,但我想,有三个连接在我的最后一个查询是很多。我可以使用2个连接吗?
在此先感谢您的帮助。
你的加入看起来很好。但是,您应该确保按查询中的所有列对您进行分组,而不是按照您的第二个查询中的“name”进行分组。我无法忍受MySQL允许这样做。 – Andrew