Я думаю, что, возможно, я пытаюсь быть слишком проницательным с моим кодом: p Я пытаюсь связать 2 таблицы вместе один с 1 рядом, а другой с несколькими. Но я хочу только вернуть одну строку для первой таблицы, а другую. Так что я пытаюсь использовать GROUP_CONCAT
изменить мой объединятся в один ряд так:Использование group_concat в левом соединении
col 1 || col 2 || col 3 (linked)
----------------------------------
23 || Data || data, data, data
Тогда позже я могу разбить это.
Я думаю, проблема в том, действительно ли это работает, если вам есть что присоединиться? Если у меня нет соединения строк, они, похоже, игнорируются? Если я сделаю это в подзапросе, он возвращает null?
Это мои запросы
суб-запрос
SELECT * FROM wp_fishy_posts p
LEFT JOIN (SELECT GROUP_CONCAT(i.path,',') AS linked_images,l.postID as link_id
FROM wp_fishy_images i
LEFT JOIN wp_fishy_images_post_link l ON l.imageID=i.ID) AS l ON l.link_id=p.ID
WHERE p.post_type='image'
Возвращает NULL, если строки соединены?
SELECT GROUP_CONCAT(i.path,',') AS linked_images,p.*
FROM wp_fishy_posts p
(SELECT i.path,l.postID as link_id
FROM wp_fishy_images i
LEFT JOIN wp_fishy_images_post_link l ON l.imageID=i.ID) AS l ON l.link_id=p.ID
WHERE p.post_type='image'
Не уверен, что я делаю неправильно? : S Спасибо заранее!
GROUP_CONCAT используется с группой по, не обязательно с объединением (хотя запрос может содержать соединение) – DBug
, если вы знаете, две другие таблицы 1 -to-1, в подзапросе не должно быть необходимости. И, как и большинство агрегированных функций, GROUP_CONCAT должен игнорировать нули, если не обрабатываются ненулевые значения. – Uueerdo