したがって、これら 3 つのテーブルがあるとします (データは論理的ではありません)。
所有者
ID_OWNER | NAME | SURNAME
1 John Carter
2 Chris Collins
3 Wright Doe
車
ID_OWNER | MODEL | MODEL_TYPE
1 | FORD_FOCUS | FAMILY
1 | TRANSPORTER_VW | TRANSPORTER
1 | VOLVO_S60 | null
2 | VOLVO_S80 | null
価格
MODEL_TYPE| PRICE1
FAMILY | 2
TRANSPORTER | 4
したがって、これまでに2つのSQLステートメントがあります。所有者の最初の検索:
SELECT
o.NAME, o.SURNAME
FROM
OWNERS o
WHERE
o.NAME='John';
2 番目の検索では、所有者「John」のモデルと価格を検索します。MODEL_TYPE の値が null になる可能性があるため、LEFT JOIN を使用しました。3列になりました。
SELECT
CARS.ID_OWNER, CARS.MODEL, CARS.MODEL_TYPE, PRICE.PRICE1
FROM
CARS
LEFT JOIN
PRICE ON CARS.MODEL_TYPE = PRICE.MODEL_TYPE
WHERE
CARS.ID_OWNER = 1;
結果:
ID_OWNER | MODEL | MODEL_TYPE | PRICE1 | NAME |SURNAME
1 | FORD FOCUS | FAMILY | 2 | JOHN | CARTER
1 | TRANSPORTER_VW | TRANSPORTER | 4 | JOHN | CARTER
1 | VOLOV_S60 | null | null | JOHN | CARTER
ここで、John Carter が所有するすべての車とそのモデル タイプと価格の結果が 1 つの SQL クエリの 1 行に必要です。私は立ち往生しています。
出来ますか?ピボットやその他の可能性について読みましたが、適切な答えが見つかりません。それを結合して結果を 3 行ではなく 1 行にマージする方法は?