我需要计算 track_plays 中具有特定 track_ID 的行数,并将其与从各种表中选择大量数据的查询一起加入。
这是我到目前为止所拥有的;
SELECT
T.ID,
T.url,
T.name,
T.pic,
T.T_ID,
COUNT(P.T_ID) AS plays,
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
WHERE E.ID = '3'
ORDER BY E.timestamp DESC LIMIT 15
Hopeflly 这应该比文字更快地解释我想要做的事情,但基本上是plays
一首曲目的播放次数。Events
是所有新 ID 用于任何新内容的表。它们被赋予了一个动作,因此我们可以确定它们是什么类型的事件,从而从正确的表中检索数据。
目前,使用 COUNT 查询会给出类似这样的信息
ID name pic T_ID plays ...
3 1 2 44 100
我放在那里的数据只是有代表性的,它提供的列比这更多。关键是它应该给出这样的东西;
ID name pic T_ID plays ...
3 1 2 44 100
3 3 1 48 10
4 8 2 21 86
正如您所看到的,其中的 COUNT 有很多数据被取出。
如果您需要更多详细信息,请发表评论。我不想讲太多细节,因为它可能不需要,而且我有胡扯的倾向。
谢谢!