gpt4 book ai didi

sql - 主表的详细记录计数

转载 作者:行者123 更新时间:2023-12-04 05:58:12 25 4
gpt4 key购买 nike

我在 SQL Server 中有一个主表和一个详细表(如类别和产品),有些类别没有产品。

我想统计一个类别的产品,我的Where条件是这样的ProductID=100 .

在结果中,我希望在没有产品的类别附近有 0,而其他类别有产品计数。结果必须仅适用于 ProductID=100结果的数字是类别记录的数字。我想创建一个 View ,每次运行此查询时:

select * from -ViewName where ProductID=@newProductID

最佳答案

这可以在不使用 View 的查询中相当简单地完成 - 它会是这样的:

select c.CategoryName, count(p.ProductID)
from Category c
left join Product p
on c.CategoryID = p.CategoryID and p.ProductID = 100

请注意,ProductID 上的条件必须是连接条件的一部分,而不是在 where 子句中,否则查询将仅返回包含指定产品的类别。

通过使用交叉连接,这可以在 View 中相当低效地完成 - 类似于:
create view vwCategoryProduct as
select c.CategoryName,
p.ProductID,
case when c.CategoryID = p.CategoryID then 1 else 0 end as ProductIncluded
from Category c
cross join Product p

- 然后像这样从 View 中选择:
select * from vwCategoryProduct where ProductID = 100

关于sql - 主表的详细记录计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9258300/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com