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