這裏有點複雜。我一直在四處看看如何使用結果作爲列名,雖然看起來可能,但我發現的所有示例都使用了非常簡單的表格設計。MySQL列名稱作爲與結點表的多對多關係的字段名稱
我得到的是3張桌子。
我們有一個'訂單'表,它可以有'order_extras'。 'extras'表存儲額外名稱和價格,'order_extras'基本上包含主鍵,訂單ID和額外ID。
的這個粗略圖形表示如下:
使用這個作爲一個例子,讓我們假設該「額外」表被填充了3個額外的項的名稱和價格是在該階段不相關的。
我想要做的是得到所有的訂單,但是每個額外項目的名稱都有額外的列。如果已購買該物品(又稱爲order_extras表格),則會顯示價格,否則它將爲空/空。
這甚至可能嗎?我一直在研究數據透視表,但這類信息似乎有點不穩定。任何信息或建議將不勝感激!
實施例數據
額外:
+----+------------------+--------+
| id | name | price |
+----+------------------+--------+
| 1 | Insurance | 59.95 |
| 2 | Lifetime Updates | 79.95 |
| 3 | Phone Support | 124.95 |
+----+------------------+--------+
訂單:
+----+------------+
| id | customer |
+----+------------+
| 1 | John Smith |
| 2 | Bob Newbie |
| 3 | Bill Jobs |
| 4 | Ray Stantz |
+----+------------+
order_extras:
+----+----------+----------+
| id | order_id | extra_id |
+----+----------+----------+
| 1 | 4 | 2 |
| 2 | 3 | 1 |
| 3 | 3 | 3 |
| 4 | 1 | 1 |
+----+----------+----------+
期望輸出:
+----------+----------------+-----------+------------------+---------------+
| order.id | order.customer | Insurance | Lifetime Updates | Phone Support |
+----------+----------------+-----------+------------------+---------------+
| 1 | John Smith | 59.95 | 0 | 0 |
| 2 | Bob Newbie | 0 | 0 | 0 |
| 3 | Bill Jobs | 59.95 | 0 | 124.95 |
| 4 | Ray Stantz | 0 | 79.95 | 0 |
+----------+----------------+-----------+------------------+---------------+
你可以張貼一些示例數據和預期的結果?理解你在做什麼而不閱讀單詞問題可能會更容易。 :) – Taryn 2013-03-21 21:13:09
從我可以告訴,MySQL不支持任何類型的樞軸關鍵字或「真正」樞軸。看看這個帖子。這傢伙寫了一個瘋狂的sproc來處理它:http://stackoverflow.com/questions/6158230/mysql-pivot-table-with-dynamic-headers-based-on-single-column-data – 2013-03-21 21:21:27
剛剛更新了第一篇文章我希望做的一些例子 – Sk446 2013-03-21 21:34:01