2012-05-03 90 views
0

我不知道我是否有做出透視表或某些子查詢來獲得期望的結果,但是這是我的表:MYSQL選擇重複字段爲列

asset_id id  title   title_type 
34   1  episode 1  5 
34   2  TNS    4 
34   3  WXPR   3 
35   4  episode 57  5 
35   5  BLSH   4 
35   6  WXRE   3 
36   7  episode 56  5 
36   8  BLSH   4 
36   9  WXRE   3 

但這是我想要的。每個title_type在它自己的列中,WHERE標題用title_type 4 = BLSH。所以像這樣:

 
asset id  title_type 5  title_type 4 title_type 3 
35    episode 56  BLSH   WXRE 
36    episode 57  BLSH   WXRE
+0

有多少不同類型的題目有沒有?他們隨時可能改變嗎?你的查詢必須有多靈活?當添加新的標題類型時,查詢是否必須自動適應? – Kaii

+0

嗨!現在,我只使用標題類型:3,4和5.我沒有預見到這種情況會發生改變。儘管標題可能會改變(拼寫或類似的內容),但與該標題相關的title_type將始終保持不變。 – jackpass

回答

1

當然,真正的解決辦法是改變你的數據庫結構;-)

但是,您可以使用連接來獲得所需的數據。在我的例子,沒有再選擇介入:

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" 

Try my example on SQLfiddle

+0

作品!我可能已經簡化了表格來說明問題,但是關於如何製作更好的結構的任何見解都將得到極大的考驗!謝謝一堆! – jackpass