-1

プロジェクトのステータスに関する情報を格納する複数のテーブルがあります。

現在、このデータを取得するために複数のクエリを使用しているため、1 つのクエリでこれが可能かどうかはわかりません。

プロジェクト、ステータス タイプ、ステータス履歴の表があります。

私が扱っているステータス履歴テーブルは、主に project_id、status_id、date_added で構成されています。

project_id    status_id    date_added
1             1            2013-06-10 13:19:20
2             1            2013-07-12 09:12:17
3             1            2013-08-26 22:44:42
1             2            2013-09-24 16:28:25
2             2            2013-10-25 12:52:48

現在各段階にあるプロジェクトの数を調べる必要があります。したがって、各プロジェクトを調べて、テーブル内の最新のレコードの status_id を取得する必要があります。

したがって、次のような返されたデータが必要です。

status_id    count
1            1
2            2

ご協力いただきありがとうございます

4

3 に答える 3

0

非相関サブクエリのソリューションは次のとおりです。

SELECT h1.status_id, count(*) cnt FROM (
  SELECT project_id, max(date_added) date_added FROM history
  GROUP BY project_id
) h2
JOIN history h1 USING (project_id, date_added)
GROUP BY h1.status_id

ここでフィドル。

編集:

私はまたこの質問に出くわしました。より多くのテーブルを結合するには、次の方法でそれらをグループの上に追加する必要があります。

SELECT h1.status_id, count(*) cnt FROM (
  SELECT project_id, max(date_added) date_added FROM history
  GROUP BY project_id
) h2
JOIN history h1 USING (project_id, date_added)
JOIN projects p USING (project_id)
WHERE p.active = 1
GROUP BY h1.status_id

ここでフィドル。

于 2013-10-29T16:42:38.077 に答える