10
也許我的問題不是很清楚,請讓我解釋一下: 我需要的是獲取所有用戶的列表以及相應的客戶端編號/批發商組合,每一個客戶都有1到4個不同的客戶端編號/批發商組合如何將mysql內部連接結果從行分組到列
在我的數據庫我有2個表
USERS
id | name
---------
1 | a
2 | b
CLIENT_NUMBERS
id | user_id | number | wholesaler
----------------------------------
1 | 1 | ac1 | aw1
2 | 1 | ac2 | aw2
3 | 2 | bc1 | bw1
使用一個簡單的INNER JOIN我得到了客戶的行復制,每一個相應的客戶端數量/批發商
我已經成功在此查詢使用GROUP_CONCAT修復結果:
SELECT a.id AS user_id, a.name AS Name
GROUP_CONCAT(b.client_no, ', ', b.wholesaler SEPARATOR '; ') AS client_no_wholesaler
FROM users AS a
INNER JOIN client_numbers AS b ON a.id = b.user_id
GROUP BY ID
user_id | name | client_no_wholesaler
--------------------------------------------
1 | a | ac1, aw1; ac2, aw2
2 | b | bc1, bw1
到目前爲止好,但我需要「爆炸」的客戶數量/批發商組合成不同的列,所以我的結果是這樣的:
user_id | name | client_no_wholesaler1 | client_no_wholesaler2 | ...up to 4
----------------------------------------------------------------------------
1 | a | ac1, aw1 | ac2, aw2 |
2 | b | bc1, bw1 | |
得到的查詢結果與一個簡單的PHP後這樣做爆炸是不是一種選擇,因爲我使用一個類來生成XLS文件及其基於我的查詢結果列,任何想法可以理解的。
「Pivot」我今天學到了一些新東西,非常感謝,您的查詢按我需要 – hey259