У меня есть следующий запрос MySQL, который должен возвращать записи из таблицы a и b (отношение один ко многим), а также разделенный запятыми список любых значений, возвращаемых из таблицы c. Однако в таблице c не всегда будут записи (именно поэтому я использую LEFT OUTER JOIN, чтобы присоединить его к таблице a).
SELECT `a`.`id` , `a`.`name` , `b`.`id` AS `b_id` , `b`.`name` AS `b_name` , GROUP_CONCAT( `c`.`l_id` ) AS `c_ls`
FROM `a`
INNER JOIN `b` ON `a`.`b_id` = `b`.`id`
LEFT OUTER JOIN `c` ON `a`.`id` = `c`.`a_id`
GROUP BY `a`.`id`
ORDER BY `a`.`created` DESC
Приведенный выше запрос возвращает 1 запись, когда он должен вернуть 2. Запись 1 содержит 3 совпадающие записи в таблице c, запись 2 содержит 0 совпадающих записей в таблице c.
Запрос возвращает:
id | name | b_id | b_name | c_ls
1 | John | 2 | Bla | [BLOB - 3 B]
Если я удаляю предложения GROUP_CONCAT и GROUP_BY, он возвращает 2 записи:
id | name | b_id | b_name | c_ls
1 | John | 2 | Bla | [BLOB - 3 B]
2 | Fred | 3 | Blo | [BLOB - NULL]
Похоже, что если c_ls имеет значение null, то GROUP_CONCAT останавливает возвращение строки. Есть мысли о том, что я делаю не так?