.net 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

我是sql新手

这是我的问题

要求连接2个表并获得总计数

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吗?