0
私は3つのテーブルを持って、SQL:いずれかのテーブルから最初の行の一致条件を取得するには?
問題
|id|subject|assigned_to_id|
---------------------------
|1 |test | 1 |
|2 |test1 | NULL |
|3 |test3 | 2 |
ジャーナル
|id|issue_id|notes|
-------------------
|1 |1 |NULL |
|2 |1 |test1|
|3 |2 |test |
ジャーナルの詳細
|id|journal_id|prop_key |old_value|value|
----------------------------------------------
|1 |1 |assigned_to_id|NULL |1 |
Journals
およびJournal details
テーブルは、Issue
の履歴を維持するために使用されています。
issueの一部の属性が更新された場合、更新された属性ごとにjournal
エントリがjournal details
とともに作成されます。また、issue
にメモが追加された場合は、そのメモでjournal
のエントリのみが作成されます。
note
が追加されたか、assigned_to_id
が変更された問題の最初のジャーナルレコードを取得します。
私はjoin
SELECT "journals".* FROM "journals" INNER JOIN "journal_details" ON "journal_details"."journal_id" = "journals"."id" WHERE "journals"."issue_id" = 1 AND ((journals.notes != '' AND journals.notes IS NOT NULL) OR (journal_details.prop_key = 'assigned_to_id' AND journal_details.value IS NOT NULL)) ORDER BY journals.id asc
経由でこれをやっているが、それは唯一のnotes
が存在するjournal
エントリを返します。
|id|issue_id|notes|
-------------------
|2 |1 |test1|
私はLEFT JOIN
とLEFT OUTER JOIN
が、同じ結果をしようとしています。
どのように私はこれを達成することができますか?
を動作するはず?関連していない製品にタグを付けないでください。 – jarlh
外部結合と正しい順序を使用する場合、私はPostgresql –
を使用しています。すべての行が返されると確信しています –