Witajcie!
Mam drobbny problem z napisaniem optymalnego zapytania do wyciągania drzewa nested set.

Tabela zawiera (dla uproszczenia) pola (varchar)name, (enum: none, news, article, page)type oraz (text)link.
Obecnie aby wyciągnąć drzewo wykonuje takie zapytanie:
  1. SELECT
  2. menu.*,
  3. news.seo_filename AS news_seo_filename,
  4. articles.seo_filename AS article_seo_filename,
  5. subpages.seo_filename AS subpage_seo_filename
  6. FROM menu
  7. LEFT OUTER JOIN news ON menu.link = news.id
  8. LEFT OUTER JOIN articles ON menu.link = articles.id
  9. LEFT OUTER JOIN subpages ON menu.link = subpages.id
  10. ORDER BY lft


Działa, ale jest to bardzo nieoptymalne smile.gif Wolałbym coś z IF tak aby LEFT OUTER JOIN wykonywał się na tabeli news tylko wtedy gdy type==news itd.
Do tego fajnie aby zawsze seo_filename lądowało w to samo pole - w obecnej chwili muszę PHPem sobie wybrać.

Czy ktoś ma pomysł jak takowe zapytanie rozpisać? Próbowałem używać IF() ale niestety nic mi z tego nie wyszło.