Hi allemaal,

ik heb een tabel met producten, en een gerelateerde producten tabel.

gerelateerde producten is als volgt:
rel_id
rel_productid
rel_relatedto

Hoe kan ik nou in 1 query doen van 'SELECT * FROM products WHERE product_id = 1' waar ook tegelijk alle producten in staan waar deze relatedto is ?

(waarschijnlijk een beetje een beginners vraag?)

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
) 
Bo, natuurlijk bedoel ik UNION. Bedankt voor de correctie.
Ik zou dit met 2 afzonderlijke queries doen.
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?
Dat bedoelde ik inderdaad.
Voor gerelateerde producten krijg je dan deze query:

SELECT
	p.id,
	p.title
FROM
	related_products r
JOIN
	products p
	ON r.rel_productid = p.id
WHERE
	r.rel_relatedto = 111111 /* $product */
<3 thanks!
Gewoon ter bevestiging:

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 ;-)

Reageren