/ / dołączanie / wyszukiwanie 3 tabel - sql, left-join

dołączanie / wyszukiwanie 3 tabel - sql, left-join

Mam 3 tabele

order (customerID, productID)
product (productID, prodName, classID)
classification (classID, className)

Muszę uzyskać prodName i className, gdzie customerID = 5555

SELECT prodName FROM product AND className FROM classification
LEFT JOIN order
WHERE order.customerID=12345

To nie działa, myślę, że mogę dołączyć do niewłaściwego stołu lub czegoś. Co jest nie tak? Wielkie dzięki.

Odpowiedzi:

2 dla odpowiedzi № 1

Musisz określić, w jakim polu jest przyłączenie, na przykład:

SELECT prodName FROM product AND className
FROM classification
LEFT JOIN order
ON classification.productID = order.productID
WHERE order.customerID=12345

2 dla odpowiedzi nr 2

Twoja składnia jest trochę wyłączona;

SELECT
prodName
FROM
product
,classification LEFT JOIN order ON(classification.classID = order.classID)
WHERE
order.customerID = 12345
and order.productID = product.productID

To zwróci twoją nazwę prod. Muszę być szczery, nie jestem pewien, dlaczego robisz lewe dołączenie tutaj; nigdy tego nie robisz. LEFT JOIN zwróci wszystkie rekordy z Klasyfikacji i TYLKO pasujących rekordów z Zamówienia. Poniższe zrobi to samo bez bezsensownego LEFT JOIN

SELECT
prodName
FROM
product
,classification
,order
WHERE
order.customerID = 12345
AND order.classID = classification.classID
AND order.productID = product.productID

W rzeczywistości to jedyny powód, dla którego widzę nawet możliwość przyłączenia siętabela klasyfikacji ma na celu upewnienie się, że zlecenie ma ważną klasyfikację, którą powinieneś zweryfikować na etapie tworzenia rekordu. Możesz zastanowić się nad tym, co próbujesz osiągnąć tutaj.


0 dla odpowiedzi № 3

Widzieć ten samouczek dotyczący W3Schools. Twoja składnia SQL jest niepoprawna. Powinien wyglądać bardziej jak:

SELECT prodName, className
FROM product
LEFT JOIN order ON order.productID = product.productID
WHERE order.customerID = 12345