Vis produkter i kategorier og underkategorier? (svær)
Hej allesammen,Denne her er lidt tricky fordi den virker, men er ekstrem langsom.
Jeg har følgende SQL kald:
---------------------------------------
$cat_id = (int) $_GET['cat_id'];
SELECT products.*, pp.img
FROM products
LEFT JOIN products_photos AS pp ON pp.product_id = products.id
LEFT JOIN products_categories AS c ON c.product_id = products.id
LEFT JOIN categories ON categories.id = c.cat_id
WHERE (c.cat_id = '$cat_id' OR categories.parent_id = '$cat_id') AND (pp.primary_img = '1' OR pp.primary_img is null)
GROUP BY products.id
ORDER BY id DESC
---------------------------------------
products : indeholder alle produkterne
products_photos : mellemtabel for produkternes billeder
products_categories : mellemtabel for produkternes kategorier
categories : indeholder alle kategorierne
Det ovenstående gør er at hente alle produkterne og billederne til den kategori man er inde på.
Da et produkt sagtens kun kan være tilknyttet en underkategori, og ikke hovedkategorien, så skal den vise alle produkterne fra hovedkategorien samt underkategorierne hvis man vælger en hovedkategori.
Altså kort sagt: Den viser alle produkterne som er til en hovedkategori samt alle underkategorierne hvis man vælger en hovedkategori.
Det SQL kald jeg har lavet virker, men er utrolig langsomt (selv offline).
Der hvor koden knækker er:
WHERE (c.cat_id = '$cat_id' OR categories.parent_id = '$cat_id')
Hvis jeg erstatter det med:
WHERE (c.cat_id = '$cat_id')
Så kører scriptet optimalt, men den viser så kun produkterne til den kategori man er inde på - og ikke underkategorierne hvis det er en hovedkategori.
Er der nogen der har en anden måde at formulere mit SQL kald på, da det er utrolig frustrerende at det virker så langsomt når det ellers bare kører perfekt.
På forhånd rigtig mange tak.