2

特定の track_ID を持つ track_plays の行数をカウントし、これをさまざまなテーブルから大量のデータを選択するクエリに結合する必要があります。

これが私がこれまでに持っているものです。

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

私がやろうとしていることを言葉よりも早く説明する必要がありますが、基本的には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 があると、多くのデータが取り出されます。

詳細が必要な場合はコメントしてください。必要ないかもしれないし、ワッフルする傾向があるので、あまり詳細には触れたくありません.

ありがとう!

4

2 に答える 2

2

完了しました。助けてくれたすべての人に感謝します。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
于 2013-04-28T14:57:44.297 に答える