我有3张桌子
order (customerID, productID)
product (productID, prodName, classID)
classification (classID, className)
我需要获取prodName和className,其中customerID = 5555
SELECT prodName FROM product AND className FROM classification
LEFT JOIN order
WHERE order.customerID=12345
它不起作用,我想我可能会加入错误的桌子或其他东西。怎么了?非常感谢。
答案 0 :(得分:2)
您需要指定联接所在的字段,如下所示:
SELECT prodName FROM product AND className
FROM classification
LEFT JOIN order
ON classification.productID = order.productID
WHERE order.customerID=12345
答案 1 :(得分:2)
你的语法有点偏;
SELECT
prodName
FROM
product
,classification LEFT JOIN order ON(classification.classID = order.classID)
WHERE
order.customerID = 12345
and order.productID = product.productID
这将返回您的产品名称。说实话,我不确定你为什么要在这里做左联;你永远不会做任何事情。 LEFT JOIN将返回分类中的所有记录以及订单中的匹配记录。没有无意义的LEFT JOIN
,下面会做同样的事情SELECT
prodName
FROM
product
,classification
,order
WHERE
order.customerID = 12345
AND order.classID = classification.classID
AND order.productID = product.productID
事实上,我看到甚至加入分类表的唯一原因是确保订单具有有效的分类,您应该在记录的创建上进行验证。你可能想重新考虑一下你在这里想要完成的事情。
答案 2 :(得分:0)
见this tutorial on W3Schools。您的SQL语法不正确。它看起来应该更像:
SELECT prodName, className
FROM product
LEFT JOIN order ON order.productID = product.productID
WHERE order.customerID = 12345