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 № 1Musisz 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