SELECT * FRPM products o
WHERE o.product_id = $product
JOIN
SELECT * FROM products r
WHERE r.product_id IN (SELECT rel_relatedto FROM gerelateerde_producten WHERE rel_productid = $product)
ORDER BY ...
En vervang $product tweemaal door jouw productnummer
@Jan de Laet, je bedoelt zeker een UNION i.p.v. een JOIN? Dan is het ook meteen logisch dat je de WHERE clause voor de JOIN hebt gezet.
SELECT id, name FROM products o
WHERE o.product_id = $product
UNION
SELECT id, name
FROM products r
WHERE r.product_id
IN (
SELECT rel_relatedto
FROM related_products
WHERE rel_productid = $product
)
Hoi allemaal, bedankt voor de reacties!
Ik denk dat mn vraagstelling ook onduidelijk was..
Dit wordt voor n functie om gerelateerde producten te zoeken en alle gegevens zitten in products
ik neem aan dat ik de 1e where weg kan laten?
Dit is ook de reden waarom Ger het met 2 queries zou doen?
1 voor huisige product en andere voor gerelateerde producten?
return $this->database->select('SELECT
p.*
FROM
dnshop_related_products r
JOIN
dnshop_products p
ON r.rel_related_prod_id = p.prod_id OR r.rel_prod_id = p.prod_id
WHERE
(r.rel_related_prod_id = :productid OR rel_prod_id = :productid) AND p.prod_id <> :productid',array('productid' => $param));
Dit doet het wel (tenminste... met een paar enkele producten.. heb nog geen 'live' omgeving
Doe ik dit dan goed?
Op deze manier heb ik namelijk ook het volgende gemaakt:
return $this->database->select('SELECT p.*,COUNT(r.rev_id) as revAmount,SUM(r.rev_score) as revTotal
FROM
dnshop_reviews r
JOIN
dnshop_products p
ON r.rev_prod_id = p.prod_id
WHERE p.prod_category = :category', array('category' => $param));
Maar dat werkt dan weer net niet.. Deze laat 1 producten in van :category, incl. totaal aantal reviews en score (van alle reviews bij elkaar).
(Ik weet het.. nooit * gebruiken in queries..) Komt dadelijk wel ;-)