MySQL: Как мне добавить строку в строке X2 с идентификатором Y1 в столбце Z1 в строку X1 с идентификатором Y1 в столбец Z1?

#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       |
 -------- ------------