Объединение выбора в столбцах SQL - PullRequest
0 голосов
/ 21 сентября 2018

у меня 3 таблицы в нм отношенииТаблица A, Таблица B и Таблица A_has_B.

SELECT A.ID_Projectos, B.Nombre_Imagen 
FROM Table A_has_B 
INNER JOIN B on Table A_has_B.ID_Imagenes = B.ID_Imagenes 
INNER JOIN A on Table A_has_B.ID_Projectos = A.ID_Projectos

Мой вывод с этим выбором sql:

ID_Projectos | Nombre_Imagen
1            | Name_1.jpg
1            | Name_2.jpg
1            | Name_3.jpg

Но мне нужен этот вывод ...

ID_Projectos | Nombre_Imagen | Nombre_Imagen2 | Nombre_Imagen3
1            | Name_1.jpg    | Name_2.jpg     | Name_3.jpg

1 Ответ

0 голосов
/ 21 сентября 2018

Самый простой способ - объединить значения в один столбец:

SELECT A.ID_Projectos, GROUP_CONCAT(B.Nombre_Imagen)
FROM Table A_has_B INNER JOIN
     B
     on Table A_has_B.ID_Imagenes = B.ID_Imagenes INNER JOIN
     A
     on Table A_has_B.ID_Projectos = A.ID_Projectos;

Вероятно, самый простой способ поместить это в три столбца - использовать манипуляции со строками:

SELECT A.ID_Projectos,
       SUBSTRING_INDEX(GROUP_CONCAT(B.Nombre_Imagen), ',' 1) as imagen_1,
       (CASE WHEN COUNT(*) >= 2 THEN SUBSTRING_INDEX(SUBSTRING_INDEX(GROUP_CONCAT(B.Nombre_Imagen), ',' 2), ',', -1) END) as imagen_2,
       (CASE WHEN COUNT(*) >= 3 THEN SUBSTRING_INDEX(SUBSTRING_INDEX(GROUP_CONCAT(B.Nombre_Imagen), ',' 3), ',', -1) END) as imagen_3
FROM Table A_has_B INNER JOIN
     B
     on Table A_has_B.ID_Imagenes = B.ID_Imagenes INNER JOIN
     A
     on Table A_has_B.ID_Projectos = A.ID_Projectos
GROUP BY A.ID_Projectos;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...