1

我是 sql 新手。

这是我的问题

要求是加入2个表并获得总数

Order: { ID, AccountID, OrderName}

OrderDetails: { ID, OrderID, Productcode, ProductTitle, ...}

现在我想获取与给定帐户关联的“订单详细信息”的订单总数。

更多信息..

将这两个表加入OrderID一个特定的AccountId并获得总计数。

还删除重复项。这意味着订单 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

这给了我正确的计数。

这是正确的方法吗?还是有更好的方法来实现这一目标?

谢谢

国民账户体系

4

1 回答 1

1

你可以在没有子查询的情况下做到这一点:

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)

顺便说一句,最好不要调用您的 table Order,因为这是order by.

于 2013-09-10T06:15:40.723 回答