繁体   English   中英

使用FROM子句将两个查询联接到子查询中

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM