Sql,查询获取加入2个表的总计数

时间:2013-09-10 06:12:53

标签: .net sql

我是sql的新手。

这是我的问题

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

Order {IDAccountIDOrderName}

OrderDetails {IDOrderIDProductcodeProductTitle,...}

现在我想获得与给定帐户关联的'Orderdetails'的订单总数。

更多信息..

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

这给了我正确的计数。

这是正确的方法吗?或者有更好的方法来实现这个目标吗?

由于

SNA

1 个答案:

答案 0 :(得分: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)
顺便说一句,最好不要调用你的表Order,因为这是order by的保留关键字。