#mysql #arrays #sorting #multiple-entries
#mysql #массивы #сортировка #множественные записи
Вопрос:
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 таблицы connector есть дублет, эти две (или более) записи объединяют строки в поле Value для моего вывода.
Это вообще выполнимо с помощью запроса MySQL, или мне придется прибегнуть к сортировке по всей базе данных с помощью PHP-массива? Я бы предпочел избежать этого, если это вообще возможно!
Я безрезультатно просмотрел различные объединения и подумал об использовании запроса GROUP BY и COUNT (DISTINCT …), но это просто кажется очень неэлегантным способом сделать это. Предложения приветствуются!
Ответ №1:
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 |
-------- ------------