次の要件で 2 つの行を結合するのに助けが必要です (表で示す方が簡単です..):
私のスキーマは次のようになります。
プロジェクト テーブル:
project_id | name
--------------------------------
1 Project1
2 Project2
3 Project3
project_program テーブル
id | project_id | program_id
-----------------------------------
1 1 1
2 1 2
2 3 2
プログラム表:
program_id | type | name
---------------------------------------
1 A test
2 B production
select ステートメントに必要な出力:
project_id | name | A | B
-------------------------------------------------------------------
1 Project1 test production
2 Project2 (null) (null)
2 Project3 (null) production
これは私がこれまでに達成したことです:
SELECT
project.*,
CASE WHEN program.type LIKE 'A' THEN program.name ELSE NULL END AS A,
CASE WHEN program.type LIKE 'B' THEN program.name ELSE NULL END AS B
FROM
project
LEFT JOIN project_program ON project.project_id = project_program.project_id
LEFT JOIN program ON project_program.program_id = program.program_id
近いですが、完全ではありません。今、私の結果は次のようになります。
project_id | name | A | B
-------------------------------------------------------------------
1 Project1 test (null)
1 Project1 (null) production
2 Project2 (null) (null)
3 Project3 (null) production
私はオラクル11gを使用しています。