0

目的の結果を得るためにピボット テーブルまたはいくつかのサブクエリを作成する必要があるかどうかはわかりませんが、これは私が持っているテーブルです。

asset_id id タイトル title_type
34 1 エピソード 1 5
34 2 TNS 4
34 3 WXPR 3
35 4 エピソード 57 5
35 5 BLSH 4
35 6 WXRE 3
36 7 エピソード 56 5
36 8 BLSH 4
36 9 WXRE 3

しかし、これは私が欲しいものです。独自の列の各 title_type と、title_type 4 = BLSH の WHERE タイトル。このように:

アセット ID title_type 5 title_type 4 title_type 3
35 エピソード 56 BLSH WXRE
36 エピソード 57 BLSH WXRE
4

1 に答える 1

1

もちろん、本当の修正はデータベース構造を変更することです;-)

ただし、JOIN を使用して目的のデータを取得することはできます。私の例では、関連するサブセレクトはありません:

SELECT 
  o.asset_id, 
  /* select the data from the self-joins */
  `5`.title AS title_type_5,
  `4`.title AS title_type_4,
  `3`.title AS title_type_3
FROM 
  foo o
/* use self-joins to combine data of multiple rows in a single row */
LEFT JOIN foo `3` ON `3`.title_type = 3 AND `3`.asset_id = o.asset_id
LEFT JOIN foo `4` ON `4`.title_type = 4 AND `4`.asset_id = o.asset_id
LEFT JOIN foo `5` ON `5`.title_type = 5 AND `5`.asset_id = o.asset_id
WHERE 
  o.title_type = "4" 
  AND o.title = "BLSH"

SQLfiddle で私の例を試してください

于 2012-05-04T06:45:26.043 に答える