Конкат SQL строк таблицы2 в столбец таблицы1 - PullRequest
0 голосов
/ 08 марта 2012
Table1
+----+--------------+
| id |   csvalues   |
+----+--------------+
|  1 |    100;1001; |
|  3 |    300;12;   |
|  4 |    400;44;   |
+----+--------------+


Table2
+----+----------+--------+
| id | csvalues2|table1ID|
+----+----------+--------+
|  1 |  10      |    1   |
|  3 |  30      |    1   |
|  4 |   111    |    3   |
+----+----------+--------+

Есть эти 2 таблицы.Я не хочу получить такой результат

RESULT
+----+----------------+
| id |   csvalues     |
+----+----------------+
|  1 |100;1001;10;30; |
|  3 |300;12;111;     |
+----+----------------+

Возможно ли это?Я попытался присоединиться к таблицам слева, но не смог получить Table2.csvalues2 в RESULT.csvalues.

Ответы [ 2 ]

2 голосов
/ 08 марта 2012

Вот одно решение, которое будет работать с данными вашего примера.Я использовал внутреннее соединение вместо левого, потому что ваш пример подразумевает, что вы хотите включить только строки из Таблицы 1, которые имеют связанные строки в Таблице 2:

select Table1.id,
  concat(Table1.csvalues,group_concat(Table2.csvalues2 separator ';'),';') as csvalues
from Table1
  inner join Table2 on Table2.table1ID = Table1.id
group by Table1.id;
1 голос
/ 08 марта 2012

Я бы попробовал сделать что-то вроде

SELECT Table1.ID, CONCAT(Table1.csvalues, ';', (SELECT GROUP_CONCAT(Table2.csvalues2 SEPARATOR ';') FROM Table2 WHERE Table2.table1ID = Table1.ID)) FROM Table1;

В тестовой базе данных, которую я собрал, это вернул ожидаемый вами результат.

...