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 列中有一个双峰时,这两个(或更多)条目都会合并 Value 字段中的字符串以用于我的输出。

这对 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 回答