MySQL выбрать отношение двух предметов

категории

id -- PK
pid -- FK to self (id), allow NULL
name
description
slug

Теги

id -- PK
name
description
slug

Cat_Rel

id -- PK
pid -- FK: Post Id
cid -- FK: Category Id

Tag_Rel

id -- PK
pid -- FK: Post Id
tid -- FK: Tag Id

Мне нужен этот результат в одном запросе:
строка: pid | tag1, tag2, tag3 | cat1, cat5

0

Решение

Я бы сделал это с двумя подзапросами и union all:

select pid, max(tags), max(cats)
from ((select t.pid, group_concat(t.name) as tags, NULL as cats
from tag_rel tr join
tags t
on tr.tid = .tid
group by t.pid
) union all
(select c.pid, NULL, group_concat(c.name) as cats
from cat_rel cr join
cats c
on cr.cid = c.id
)
) ct
group by pid;

Это гарантирует, что вы получите все сообщения, даже те, у которых нет тегов и / или нет категорий.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]