2016-11-16 12 views
0

У меня есть эта выберитеConcat колонка MYSQL

SELECT page.*, page_lang.*, category.title as category FROM page 
JOIN page_lang ON page.id = page_lang.id_page 
JOIN relation ON page.id = relation.from_id 
JOIN page_lang as category ON category.id_page = relation.to_id 
WHERE page.type = 'blog-detail' 
AND relation.type = 1 

Это возвратные повторяющиеся строки, когда одна страница имеет две или более категорий

ID PAGE | НАЗВАНИЕ | КАТЕГОРИИ
1 | Название 1 | категория 1
2 | Название 2 | категория 1
3 | Название 3 | категория 2
1 | Название 1 | категория 2

Но я хочу это

ID СТРАНИЦЫ | НАЗВАНИЕ | КАТЕГОРИИ
1 | Название 1 | категория 1, категория 2
2 | Название 2 | категория 1
3 | Название 3 | категория 2

Если я использую GROUP_CONCAT (category.title), возвращаю 1 строку.

+0

Что такое название 'title' столбца' page' таблицы? Я сомневаюсь, что запрос, который вы нам показали, действительно генерирует выданный результат. –

ответ

1

Вы должны использовать GROUP_CONCAT:

SELECT page.*, page_lang.*, group_concat(distinct category.title) as category FROM page 
JOIN page_lang ON page.id = page_lang.id_page 
JOIN relation ON page.id = relation.from_id 
JOIN page_lang as category ON category.id_page = relation.to_id 
WHERE page.type = 'blog-detail' 
AND relation.type = 1 
GROUP BY page.id 
+0

Спасибо! Это работает! – NARTONIC

0

попробуйте использовать команду "UNIQUE"

SELECT UNIQUE page.*, page_lang.*, category.title as category FROM page 
JOIN page_lang ON page.id = page_lang.id_page 
JOIN relation ON page.id = relation.from_id 
JOIN page_lang as category ON category.id_page = relation.to_id 
WHERE page.type = 'blog-detail' 
AND relation.type = 1 
+0

Это не даст желаемого результата. –