joining/searching3张桌子

joining/searching 3 tables

我有 3 table

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

它不起作用,我想我可能加入了错误的 table 什么的。怎么了?非常感谢。

参见this tutorial on W3Schools。您的 SQL 语法不正确。它应该看起来更像:

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

您需要指定联接在哪个字段上,如下所示:

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

你的语法有点不对;

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

这将 return 您的产品名称。老实说,我不确定你为什么要在这里进行左连接;你永远不会用它做任何事情。 LEFT JOIN 将 return 您所有来自分类的记录和仅来自订单的匹配记录。如果没有毫无意义的 LEFT JOIN

,下面会做同样的事情
SELECT
    prodName
FROM
    product
    ,classification
    ,order
WHERE
    order.customerID = 12345
    AND order.classID = classification.classID
    AND order.productID = product.productID

事实上,我认为加入分类的唯一原因 table 是为了确保订单具有有效的分类,无论如何您都应该在创建记录时对其进行验证。您可能需要重新考虑您要在此处完成的任务。