.net Sql,用于获取连接2个表的总计数的查询
我是sql新手 这是我的问题 要求连接2个表并获得总计数.net Sql,用于获取连接2个表的总计数的查询,.net,sql,.net,Sql,我是sql新手 这是我的问题 要求连接2个表并获得总计数 Order:{ID,AccountID,OrderName} OrderDetails:{ID,OrderID,Productcode,ProductTitle,…} 现在我想获取与给定帐户的“Orderdetails”关联的订单总数 更多信息.. 针对特定的AccountId将这两个表连接到OrderID上,并获取总计数 还要删除重复项。 这意味着订单id会在第二个表中重复显示产品代码 存在插入订单时没有订单详细信息的实例。这意味着Or
Order
:{ID
,AccountID
,OrderName
}
OrderDetails
:{ID
,OrderID
,Productcode
,ProductTitle
,…}
现在我想获取与给定帐户的“Orderdetails”关联的订单总数
更多信息..
针对特定的AccountId
将这两个表连接到OrderID
上,并获取总计数
还要删除重复项。
这意味着订单id会在第二个表中重复显示产品代码
存在插入订单时没有订单详细信息的实例。这意味着OrderID
在OrderDetails
中不存在
我的查询'
select count(*) from(
SELECT MO.id
FROM dbo.Order MO
JOIN
dbo.OrderDetails MOD ON
MO.ID = MOD.OrderID
WHERE MO.AccountID ='123rt65-eee-ddd-ddd-dddddd'
group by MO.ID) n
这给了我正确的计数
这条路对吗?还是有更好的方法来实现这一点
谢谢
SNA您可以在不使用子查询的情况下执行此操作:
select count(distinct MO.ID)
from dbo.Order as MO
inner join dbo.OrderDetails as MOD on MOD.OrderID = MO.ID
where MO.AccountID ='123rt65-eee-ddd-ddd-dddddd'
或者,由于您不需要来自OrdersDetails
的数据:
select count(*)
from dbo.Order as MO
where
MO.AccountID ='123rt65-eee-ddd-ddd-dddddd' and
exists (select * from dbo.OrderDetails as MOD where MOD.OrderID = MO.ID)
顺便说一句,最好不要调用表
Order
,因为这是orderby
的保留关键字,您无需子查询即可执行此操作:
select count(distinct MO.ID)
from dbo.Order as MO
inner join dbo.OrderDetails as MOD on MOD.OrderID = MO.ID
where MO.AccountID ='123rt65-eee-ddd-ddd-dddddd'
或者,由于您不需要来自OrdersDetails
的数据:
select count(*)
from dbo.Order as MO
where
MO.AccountID ='123rt65-eee-ddd-ddd-dddddd' and
exists (select * from dbo.OrderDetails as MOD where MOD.OrderID = MO.ID)
顺便说一句,最好不要调用您的表
Order
,因为这是orderby
的保留关键字。您可以使用distinct以避免重复的条目计数。您可以使用distinct以避免重复的条目计数。谢谢。原始表名不是order。这是我根据original创建的一个示例这其中哪一个是更好的查询?为什么呢?第二个更好,因为它不进行连接,然后计算不同的id,相反,它只是过滤掉订单细节中没有相应记录的所有订单。顺便说一句,您使用的是什么RDBMS?SQL Server、PostgreSQL、MySQL?@SNA SQL只是一种结构化查询语言。是SQL Server吗?谢谢。原始表名不是order。这是我根据original创建的一个示例这其中哪一个是更好的查询?为什么呢?第二个更好,因为它不进行连接,然后计算不同的id,相反,它只是过滤掉订单细节中没有相应记录的所有订单。顺便说一句,您使用的是什么RDBMS?SQL Server、PostgreSQL、MySQL?@SNA SQL只是一种结构化查询语言。是SQL Server吗?