我正在尝试编写一个SQL Select语句,该语句将告诉我艺术家已记录的实践总数和节目总数。
我有三张桌子,艺术家,练习和表演。
Practices和Shows表中有一个艺术家ID作为外键,以及它们自己的自动递增ID和一个日期列。我试图计算每个用户的实践总数和显示总数。
我试过几种说法。。这是最近的一次尝试。

SELECT COUNT(P.Practice_ID) as NumberOfPractices, COUNT(S.Show_ID) as NumberOfShows
FROM Practices P
INNER JOIN Artists A ON P.Artist_ID = A.Artist_ID
RIGHT JOIN Shows S ON A.Artist_ID = S.Artist_ID
WHERE A.Artist_ID = :artistID

这个,还有我试过的所有其他方法,似乎都是把两张桌子的数量相乘。例如,实践应等于21,而显示为2。但结果我两个人都得了42分。

最佳答案

左外连接被用作艺术家可以有0个表演或练习。

SELECT COUNT(DISTINCT P.Practice_ID) as NumberOfPractices, COUNT(DISTINCT S.Show_ID) as NumberOfShows
FROM Artists A
LEFT OUTER JOIN Practices P ON P.Artist_ID = A.Artist_ID
LEFT OUTER JOIN Shows S ON A.Artist_ID = S.Artist_ID
WHERE A.Artist_ID = :artistID
GROUP BY A.Artist_ID

关于mysql - 从2个表中按1个用户计数条目总数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48998041/

10-16 09:55