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 是为了确保订单具有有效的分类,无论如何您都应该在创建记录时对其进行验证。您可能需要重新考虑您要在此处完成的任务。
我有 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 是为了确保订单具有有效的分类,无论如何您都应该在创建记录时对其进行验证。您可能需要重新考虑您要在此处完成的任务。