2010-12-10 28 views
3

J'ai 3 tables: Produits, vendeurs et prix. Price a id_produit et vendor_id en tant que clés étrangères. Maintenant, je veux montrer que les prix:Comment créer INNER JOIN plusieurs tables en sql

price_id: product_name: VENDOR_NAME: prix

Quelque chose comme:

SELECT p.product, v.vendor, pc.price 
FROM Products AS p, 
Vendors AS v 
INNER JOIN Prices AS pc 
ON p.product_id = pc.product_id 
INNER JOIN Prices AS pc 
ON v.vendor = pc.vendor_id 

mais je na pas le faire fonctionner.

Répondre

7

Essayez ceci:

SELECT pr.price_id, p.product_name v.vendor_name, pr.price 
FROM Prices AS pr 
LEFT JOIN Products AS p ON p.product_id = pr.product_id 
LEFT JOIN Vendors AS v ON v.vendor = pr.vendor_id 
+0

Pourquoi "LEFT JOIN" plutôt que "INNER"? La question indique que 'product_id' et' vendor_id' sont tous deux contraints par des clés étrangères. Donc, il ne devrait pas y avoir la possibilité d'une entrée dans la table de prix qui ne joint pas à un fournisseur/produit. –

0

Vous ne pouvez pas utiliser le même alias deux fois

Prices as pc 

Vous ne pouvez utiliser pc une fois.

0

ou écrire 3 diffent instructions select et les joindre à UNION

0

Bonjour j'ai 3 tables différentes, et cette requête fonctionne bien.

SELECT A.ID_USER,A.NAME,D.ADDRESS,B.ID_STATE,B.STATE,A.ID_COUNTRY,C.COUNTRY 
FROM market.USER A 
    INNER JOIN market.state B 
ON A.ID_STATE=B.ID_STATE 
    INNER JOIN market.country C 
ON A.ID_COUNTRY=C.ID_COUNTRY 
    INNER JOIN market.contact D 
ON A.ID_CONTACT=D.ID_CONTACT 

essayez de le faire pour votre propre besoin.