Mysql SQL-左连接选择和选择计数(*)

Mysql SQL-左连接选择和选择计数(*),mysql,sql,Mysql,Sql,我需要计算曲目播放中具有特定曲目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.act

我需要计算曲目播放中具有特定曲目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
希望这能比文字更快地解释我想做的事情,但基本上,
播放次数
统计一首曲目的播放次数<代码>事件是所有新ID用于任何新内容的表。给它们一个操作,以便我们可以确定它们是什么类型的事件,从而从正确的表中检索数据

目前,在计数的情况下,查询会给出如下结果

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
正如你们所看到的,随着计数的增加,很多数据被取出

如果您需要更多详细信息,请发表评论。我不想谈太多细节,因为可能不需要,而且我有胡扯的倾向

谢谢

请参见,因为您需要一个明确的分组依据。我认为您需要在查询中添加以下内容:

...
GROUP BY P.T_ID

完成了,感谢所有帮助过我的人。我缺少
GROUP BY
子句。现在它就像一个符咒。这是成品:

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'
GROUP BY T.T_ID
ORDER BY E.timestamp DESC LIMIT 15

GROUP
我想是你的朋友。所以E.ID是结果表中的“关键”还是我误解了?这是我不想深入讨论的。对于查询的大多数部分,E_ID是“键”,但在播放计数的情况下,是的T_ID是“键”。对不起。。。当我看到我的错误时,我改变了我的评论…所以我不确定如何使用这个。我是想让GROUP BY在左侧加入,还是在它之后加入?