[英]Using a FROM Clause to Join two Queries into a Sub-Query
我正在尝试使用FROM
子句将两个查询合并为一个不相关的表达式。 我试图模仿这本书中的课程计划示例,但是关于加入我却总是出错。
错误是:
消息156,第15级,状态1,第6行
关键字“ JOIN”附近的语法不正确。
我认为这意味着我的方法还很遥远。
这两个查询是:
SELECT Product.product_id, product.product_name
FROM Product
JOIN Sells on Sells.product_id = product.product_id
GROUP BY product.product_id, product.product_name
HAVING COUNT(sells.store_location_id) = 5;
SELECT Product.product_name, Sizes.Size_option
FROM Product
JOIN Available_in ON Product.product_id = Available_in.product_id
JOIN Sizes ON Available_in.sizes_id = Sizes.sizes_id
我当前的代码是:
SELECT Product.product_name, Sizes.Size_option
FROM (SELECT Sells.product_id
FROM Sells
JOIN Sells on Sells.product_id = product.product_id
GROUP BY Sells.product_id
HAVING COUNT(*) = 5)
JOIN Available_in ON Product.product_id = Available_in.product_id
JOIN Sizes ON Available_in.Sizes_id = Sizes.sizes_id;
在派生表之外将无法使用“产品”进行连接,请按以下方式修改代码:-
SELECT Temp.product_name, Sizes.Size_option
FROM (SELECT Sells.product_id
FROM Sells
JOIN Sells on Sells.product_id = product.product_id
GROUP BY Sells.product_id
HAVING COUNT(*) = 5) Temp
JOIN Available_in ON Temp.product_id = Available_in.product_id
JOIN Sizes ON Available_in.Sizes_id = Sizes.sizes_id;
语法错误可能是由于缺少子查询的别名(SELECT sells....)
。 我可以通过将第一个查询转换为子查询(在5个地点出售的产品)并将其命名为Product
并将其加入第二个查询来实现:
SELECT Product.product_name, Sizes.Size_option
FROM
-- first query --
(SELECT Product.product_id, product.product_name
FROM Product
JOIN Sells on Sells.product_id = product.product_id
GROUP BY product.product_id, product.product_name
HAVING COUNT(sells.store_location_id) = 5) Product
JOIN Available_in ON Product.product_id = Available_in.product_id
JOIN Sizes ON Available_in.sizes_id = Sizes.sizes_id
您当前的查询存在多个错误,因为您在子查询中有两次sales
。
如果我理解正确,则可以将查询编写为:
SELECT p.product_name, s.Size_option
FROM (SELECT s.product_id
FROM Sells s
GROUP BY s.product_id
HAVING COUNT(*) = 5
) sp JOIN
Available_in a
ON sp.product_id = a.product_id JOIN
Sizes s
ON ai.Sizes_id = s.sizes_id JOIn
Products p
ON p.product_id = a.product_id;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.