Ursprungligen inskrivet av Tjofras
Som hivemind säger, prova en join iställer.
Om jag förstått dig rätt vill du lista alla produkter i en kategori eller i en "parent".
Nått sånt här skulle nog fungera:
SELECT P.*
FROM shop_products AS P
JOIN shop_products_to_categories AS C ON (C.products_id = P.id)
WHERE C.categories_id = $id OR parent= $id
Se till att ha index på shop_products.id, shop_products_to_categories.categories_id, shop_products_to_categories.products_id samt shop_products_to_categories.parent.