たぶん私の質問はそれほど明確ではありません、私に説明させてください:私が必要とするのは、対応するクライアント番号/卸売業者の組み合わせとともにすべてのユーザーのリストを取得することです、すべてのクライアントは1から4つの異なるクライアント番号/卸売業者の組み合わせを持っています
私のデータベースには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
単純なINNERJOINを使用して、対応するクライアント番号/卸売業者ごとに1つずつ、クライアント行を複製しました。
このクエリで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 | |
クラスを使用してXLSファイルを生成し、クエリ結果の列に基づいているため、単純なPHP explodeでクエリ結果を取得した後にこれを行うことはできませんが、アイデアをいただければ幸いです。