解释一条SQL语句

小D2013 2007-06-29 04:36:42


CREATE Procedure CMRC_CustomerAlsoBought
(
@ProductID int
)
As

/* We want to take the top 5 products contained in
the orders where someone has purchased the given Product */
SELECT TOP 5
CMRC_OrderDetails.ProductID,
CMRC_Products.ModelName,
SUM(CMRC_OrderDetails.Quantity) as TotalNum

FROM
CMRC_OrderDetails
INNER JOIN CMRC_Products ON CMRC_OrderDetails.ProductID = CMRC_Products.ProductID

WHERE OrderID IN
(
/* This inner query should retrieve all orders that have contained the productID */
SELECT DISTINCT OrderID
FROM CMRC_OrderDetails
WHERE ProductID = @ProductID
)
AND CMRC_OrderDetails.ProductID != @ProductID

GROUP BY CMRC_OrderDetails.ProductID, CMRC_Products.ModelName

ORDER BY TotalNum DESC



GO
...全文
172 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
jimu8130 2007-06-29
  • 打赏
  • 举报
回复
一步一步?

SELECT TOP 5
CMRC_OrderDetails.ProductID,
CMRC_Products.ModelName,
SUM(CMRC_OrderDetails.Quantity) as TotalNum

FROM
CMRC_OrderDetails

这个是一个部分(得到排在最前面5条记录)

INNER JOIN CMRC_Products ON CMRC_OrderDetails.ProductID = CMRC_Products.ProductID

这又是一个部分(这是个内联查询,on后面是联合的条件,联合可以用父母和孩子来解释,用来联合的表可以看作是父母,然后通过联合条件《父母。。。。。后》就能产生孩子<孩子会具有父亲的某些特征<联合表的某些字段>,也会具有母亲的某些特征<被联合表的某些字段>)


SELECT DISTINCT OrderID
FROM CMRC_OrderDetails
WHERE ProductID = @ProductID
这是最后一部分()
(这个是查询得到不重复的订单号)
F15Eagle 2007-06-29
  • 打赏
  • 举报
回复
建议楼主到数据库板块里发帖子问一下,哈哈
F15Eagle 2007-06-29
  • 打赏
  • 举报
回复
首先,产品编号不等于录入产品编号的纪录;
其次,订单编号包含在产品编号等于录入产品编号的所有订单编号中

猜测是要查找某一订单中除某一产品外的纪录

仅仅是猜测……
小D2013 2007-06-29
  • 打赏
  • 举报
回复
老大,我想知道他是怎么一步一步进行查询的
jimu8130 2007-06-29
  • 打赏
  • 举报
回复
/* We want to take the top 5 products contained in
the orders where someone has purchased the given Product */
/* This inner query should retrieve all orders that have contained the productID */
不是有注释么?
weizhuangzhi 2007-06-29
  • 打赏
  • 举报
回复
获得包含订单的Top 5个产品,按TotalNum排序
刀枪blue 2007-06-29
  • 打赏
  • 举报
回复
...想怎么解释

62,025

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧