0
TABLE A
Row  IdA ValueA
1    1   ABCD
2    2   EFGH
3    3   IJKL

TABLE B
Row IdB ValueB
1   1   QWER
2   2   TYUI
3   3   OPAS

CONNECTOR X
Row  IdA  IdB
1     1    1
2     1    2
3     2    3

出力を表示したい:

OUTPUT
Value A --- ValueB(1), ValueB(2)
ABCD    --- QWER, TYUI

したがって、基本的に、コネクタテーブルのIdA列にダブレットがあるたびに、これらの2つ(またはそれ以上)のエントリが出力の[値]フィールドの文字列をマージします。

これはMySQLクエリでも実行できますか、それともPHP配列を使用してデータベース全体を並べ替える必要がありますか?できればそれは避けたいです!

私はさまざまなJOINを無駄に見て、GROUP BYおよびCOUNT(DISTINCT ...)クエリを使用することを考えましたが、それを実行するための非常に洗練されていない方法のようです。提案は大歓迎です!

4

1 に答える 1

0
SELECT a.ValueA, GROUP_CONCAT( b.ValueB SEPARATOR ', ' ) AS ValuesB
FROM connector c
JOIN tblA a ON c.IdA = a.IdA
JOIN tblB b ON c.IdB = b.IdB
GROUP BY a.IdA

結果が得られます:

+--------+------------+
| ValueA | ValuesB    |
+--------+------------+
| ABCD   | QWER, TYUI |
| EFGH   | OPAS       |
+--------+------------+
于 2011-05-21T13:46:23.043 に答える