2015-11-24 2 views
0

Я думаю, что, возможно, я пытаюсь быть слишком проницательным с моим кодом: 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 Спасибо заранее!

+0

GROUP_CONCAT используется с группой по, не обязательно с объединением (хотя запрос может содержать соединение) – DBug

+0

, если вы знаете, две другие таблицы 1 -to-1, в подзапросе не должно быть необходимости. И, как и большинство агрегированных функций, GROUP_CONCAT должен игнорировать нули, если не обрабатываются ненулевые значения. – Uueerdo

ответ

1

Вам нужно group by в подзапрос:

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 
     GROUP BY l.postId 
------^ 
    ) l 
    ON l.link_id = p.ID 
WHERE p.post_type = 'image'; 
+0

Спасибо! Не понял, что мне нужна группа :) – sourRaspberri

Смежные вопросы