0

次のテーブルがあります。

ファン

id, id_page, number_of_fans, created_at

この表には多くの同じid_pageものがありますが、次の点で異なりますcreated_at

ページ

id, id_facebook, id_keyword, is_processed (0/1)

キーワード

id, keyword, category

サブクエリを実験/試行していますが、必要な結果が得られませんでした。クエリが複雑なために非常に遅い場合があります。

結果を次のようにしたいと思います。

  1. latest( ) - (ページごと にcreated_atテーブルから 1 行のみを返します) - ページごとにテーブルを取得し、グループごとにすべての合計を取得しますfansnumber_of_fansfansnumber_of_fanskeyword
  2. すべてのページグループを取得しますkeyword
  3. keywordwhere is_processed= 1ですべてのページグループを取得します

1、2、3 の結果を MySQL の 1 つのクエリと組み合わせるにはどうすればよいでしょうか?

ありがとうございました。

よろしく、バズ

4

1 に答える 1

0

テーブルからグループごとの最大値を探しています。Fansページごとにテーブルをグループ化し、最大created_at値を選択することで見つけることができます。次に、これをテーブルに結合して、Fansその最大値レコードから他の列を取得します。

SELECT   Keyword.keyword,
         SUM(Fans.number_of_fans) fans_of_all_pages,
         SUM(IF(Page.is_processed,Fans.number_of_fans,0)) fans_of_processed_pages
FROM     Fans NATURAL JOIN (
           SELECT   id_page, MAX(created_at) AS created_at
           FROM     Fans
           GROUP BY id_page
         ) t
    JOIN Page    ON    Page.id = Fans.id_page
    JOIN Keyword ON Keyword.id = Page.id_keyword
GROUP BY Keyword.id
于 2012-09-02T18:48:38.053 に答える