2010-12-10 5 views
3

Ich habe 3 Tabellen: Produkte, Anbieter und Preise. Preise haben product_id und vendor_id als Fremdschlüssel. Jetzt möchte ich die Preise zeigen, wie:Wie INNER JOIN mehrere Tabellen in SQL erstellen

price_id: product_name: vendor_name: Preis

Etwas wie:

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 

aber ich tat es die Arbeit.

Antwort

7

Try this:

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

Warum 'LINKS VERBINDEN' anstatt 'INNEREN'? Die Frage besagt, dass 'product_id' und' vendor_id' beide durch Fremdschlüssel eingeschränkt sind. Es sollte also nicht möglich sein, einen Eintrag in die Preistabelle einzugeben, der nicht zu einem Lieferanten/Produkt gehört. –

0

Sie können nicht den gleichen Alias ​​zweimal

Prices as pc 

Sie nur PC einmal verwenden können.

0

oder 3 diffent select-Anweisungen schreiben und verbinden sie mit UNION

0

Hallo Ich habe 3 verschiedene Tabellen, und diese Abfrage funktioniert gut.

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 

versuchen, das für Ihre eigenen Anforderungen zu tun.