SQL GROUP_CONCAT помощь по запросу - PullRequest
0 голосов
/ 19 сентября 2019

У меня возникли проблемы с определением оптимального использования GROUP_CONCAT.В приведенном ниже запросе я пытаюсь выбрать несколько изображений из JAM_Plot_Images и установить их для отдельных записей.Получите запись 1, отобразите image1.jpg, image2.jpg в каждой строке.Затем получите запись 2, отобразите image3.jpg, image4.jpg во 2-й строке и т. Д.

SELECT *, GROUP_CONCAT(JAM_Plot_Images.image ORDER BY JAM_Plot_Images.image) AS images
FROM JAM_Plots
LEFT JOIN JAM_Plot_Images ON JAM_Plots.page_id = JAM_Plot_Images.page_id 
GROUP BY JAM_Plots.page_id

Проблема, с которой я сталкиваюсь, состоит в том, что если в строке нет изображений в строке, то это нарушает уникальный идентификатор, когдавывод записей, но только для этой записи.Таким образом, если в записях 1, 2 и 4 есть изображения, все будет выводиться нормально, но если в записи 3 нет изображения, уникальный идентификатор не появится.Значения NULL появляются в выводе phpmyadmin.Я пытался использовать COALESCE, чтобы исправить проблему, но не могу заставить ее работать.

1 Ответ

0 голосов
/ 19 сентября 2019

Эта проблема не имеет ничего общего с GROUP_CONCAT(), это общая проблема с LEFT JOIN, когда у вас есть повторяющиеся имена столбцов между таблицами.

Поскольку у вас одинаковое имя столбца page_id в обеих таблицах, оба они будут выбраны в результатах.Но когда нет изображений, JAM_Plot_Images.page_id будет NULL.

Чтобы устранить их неоднозначность, вы должны задать псевдоним JAM_Plots.page_id и использовать его.

SELECT *, JAM_Plots.page_id AS jp_page_id, GROUP_CONCAT(...)
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...