У меня 5 столов.
Первый products
как:
id | country_ids | category_ids | users_ids
1 | 1,4,6 | 4,5,6,70 | 5,6,9
2 | 5,6,3 | 4,8,2,11 | 1,5,8
Второй countries
как:
c_id | c_name
1 | Åland Islands
2 | Antarctica
...
Третий categories
как:
cat_id | cat_name
2 | Small
4 | Large
...
Четвертый стол users
как:
u_id | u_name
1 | David
2 | Mary
...
И пятая таблица review
(структура таблицы не важна, только идентификатор счета).
и sql
SELECT a.*, COUNT(b.comm_id) AS comm_count, c.*, d.*, e.*
FROM products AS a
LEFT JOIN comments AS b ON b.comm_prod_id = a.id AND b.comm_published = 1
LEFT JOIN countries AS c ON c.c_id IN (a.country_ids)
LEFT JOIN categories AS d ON d.c_id IN (a.category_ids)
LEFT JOIN users AS e ON e.c_id IN (a.users_ids)
/*WHERE published = 1*/
GROUP BY id
ORDER BY id DESC
LIMIT 0, 5
Но этот запрос возвращает только первое значение для объединенных таблиц.
Как я могу получить строку, как
1 | Åland Islands, Equador, Russia | Small, tiny, large, ... | Anna, John, Linda
PS! Или мне нужно создать отношения таблицы для каждой таблицы? Что очень не нравится.