mam takie zapytanie. Wyciąga ono listę "czegoś" (w tym przypadku tabela firm) wg. danego tagu, ale dodaje też listę wszystkich tagów danego elementu. Relacja firmy-tagi to typowe wiele do wielu, z tablicą pośrednią (nie znam jeszcze specjalistycznego nazewnictwa

SELECT c.id, c.cat_id, c.name, c.url, c.logo, c.rating, c.special, c.city, c.views, cc.name AS cat_name, cc.url AS cat_url, GROUP_CONCAT(DISTINCT t_all.tag SEPARATOR ', ') AS tags FROM x_company c LEFT JOIN x_company_category cc ON c.cat_id = cc.id LEFT JOIN x_company_tags ct_all ON ct_all.company_id = c.id LEFT JOIN x_tags t_all ON ct_all.tag_id = t_all.id LEFT JOIN x_company_tags ct ON ct.company_id = c.id LEFT JOIN x_tags t ON ct.tag_id = t.id WHERE t.tag = 'webdesign' GROUP BY c.id
Czy można to zapytanie zoptymalizować? Na razie bazę mam małą, więc wykonuje się szybko, nie wiem jak będzie w przyszłości.