많은 LEFT JOINS가 포함 된 매우 긴 쿼리가 있습니다. 문제는 함께 작동하지 않는 두 개의 COUNT가 있다는 것입니다. 두 카운트가 같지 않더라도 두 카운트 모두 같은 값이됩니다.왼쪽 결합은 서로 다른 테이블에서 두 개의 값을 같은 값으로 만듭니다.
다음은 내가 가지고있는 것입니다.
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
입니다.
미리 감사드립니다.
처럼 될 수를 변경해야 할 수 있습니다. LEFT JOINS에 대한 올바른 구문은 –
입니다. 나는 WHERE 절이 없다는 의미였습니다. 이 부분의 마지막 부분은 완전한 결과 집합을 나타내므로 모든 행의 수를 나타내는 두 개의 COUNT 모두에서 개수와 결과가 동일합니다. –