我有一个很长的查询,其中包含很多 LEFT JOINS。问题是我有两个似乎不能一起工作的 COUNTS。即使它们不是,两个计数都将等于相同的值。
这就是我所拥有的;
SELECT T.ID,
T.name,
T.pic,
T.T_ID,
COUNT(P.T_ID) AS plays,
COUNT(L.T_ID) AS likes,
S.Status,
G.gig_name,
G.date_time,
G.lineup,
G.price,
G.ticket,
E.action,
E.ID,
E.timestamp,
E.E_ID
FROM events E
LEFT JOIN TRACKS T
ON T.ID = E.ID AND E.action = 'has uploaded a track.' AND E.E_ID = T.T_ID
LEFT JOIN STATUS S
ON S.ID = E.ID AND E.action = 'has some news.' AND E.E_ID = S.S_ID
LEFT JOIN GIGS G
ON G.ID = E.ID AND E.action = 'has posted a gig.' AND E.E_ID = G.G_ID
LEFT JOIN track_plays P
ON P.A_ID = E.ID AND E.action = 'has uploaded a track.' AND E.E_ID = P.T_ID
LEFT JOIN track_likes L
ON L.ID = E.E_ID AND E.action = 'has uploaded a track.'
WHERE E.ID = '3'
GROUP BY E.E_ID
ORDER BY E.timestamp DESC LIMIT 15
我不会解释所有的查询,但我想你会明白它的要点。有问题的 JOINS 是最后两个。如果COUNT(P.T_ID)
=100
COUNT(L.T_ID)
也会 = 100
。
提前致谢!