2017-06-29 37 views
0

我有一個表是這樣的:計數和組多列

id | opt1 | opt2 | opt3 
1 | valX | valY | valY 
2 | valX | valX | valY 
3 | valY | valZ | valX 

所以我需要準備的數據顯示一個餅圖,它必須看起來像:

id | valX | valY | valZ 
1 | 1 | 2 | 0 
2 | 2 | 1 | 0 
3 | 1 | 1 | 1 

是什麼寫入mysql查詢的正確方法是什麼? 我想我必須首先連接所有列,但接下來的步驟?

+0

你需要這個固定數量的列,還是動態的?如果它是固定的,那麼你可以使用控制流功能來做到這一點,https://dev.mysql.com/doc/refman/5.7/en/control-flow-functions.html – CBroe

+0

在這種情況下,它是固定的,工作正常具有控制流程功能。謝謝! – Marco

+0

如果它是動態的,最好的方法是什麼? – Marco

回答

0

嘗試這個

SELECT ID, 
     CASE WHEN opt1='valX' THEN 1 ELSE 0 END + CASE WHEN opt2='valX' THEN 1 ELSE 0 END + CASE WHEN opt3='valX' THEN 1 ELSE 0 END AS valX, 
     CASE WHEN opt1='valY' THEN 1 ELSE 0 END + CASE WHEN opt2='valY' THEN 1 ELSE 0 END + CASE WHEN opt3='valY' THEN 1 ELSE 0 END As valY, 
     CASE WHEN opt1='valZ' THEN 1 ELSE 0 END + CASE WHEN opt2='valZ' THEN 1 ELSE 0 END + CASE WHEN opt3='valZ' THEN 1 ELSE 0 END As valZ 
FROM TableName 
+0

你剛纔錯過了逗號 –

+0

更新謝謝@OtoShavadze –

+1

非常棒!非常感謝! – Marco

0

歸一化的設計可能是這樣的:

id option_id option_value 
1   1 X 
1   2 Y 
1   3 Y 
2   1 X 
2   2 X 
2   3 Y 
3   1 Y 
3   2 Z 
3   3 X 

從這裏,你的查詢是微不足道的。