加入/搜索3个表

时间:2015-03-25 19:35:39

标签: sql left-join

我有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

它不起作用,我想我可能会加入错误的桌子或其他东西。怎么了?非常感谢。

3 个答案:

答案 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