必要なデータを取得するためにいくつかのテーブルを結合しましたが、SQL が初めてなので、データが複数回返されるのを止める方法がわかりません。
彼女は SQL ステートメントです。
SELECT
T.url,
T.ID,
S.status,
S.ID,
E.action,
E.ID,
E.timestamp
FROM tracks T, status S, events E
WHERE S.ID AND T.ID = E.ID
ORDER BY E.timestamp DESC
返されるデータは次のようなものです。
+----------------------------------------------------------------+
| URL | ID | Status | ID | action | ID | timestamp |
+----------------------------------------------------------------+
| T.1 | 4 | hello | 4 | has uploaded a track | 4 | time |
| T.2 | 3 | bye | 3 | has some news | 3 | time |
| t.1 | 4 | more | 4 | has some news | 4 | time |
+----------------------------------------------------------------+
これは非常に基本的な例ですが、何が起こるかを概説しています。3 行目を見ると、ステータスが異なる場合に URL が繰り返されています。
これが私が望んでいることです。
+-------------------------------------------------------+
| URL or Status | ID | action | timestamp |
+-------------------------------------------------------+
| T.1 | 4 | has uploaded a track | time |
| hello | 3 | has some news | time |
| bye | 4 | has some news | time |
+-------------------------------------------------------+
アクションがトラックをアップロードすると、URL (この場合はモックのものは T.1) が表示されることに注意してください。これはとても重要です。イベント テーブル内のアクションは、ステータスまたはトラック挿入のトリガーで挿入されます。新しいトラックが挿入された場合、アクションは「トラックをアップロードしました」であり、ステータスの意味を推測できます。この時点で、ID とタイムスタンプもイベント テーブルに挿入されます。
注:クエリに入るテーブルは他にもあり、実際には 3 つ以上ありますが、簡単にするために省略しています。