我是sql的新手。
这是我的问题
要求是加入2个表并获得总计数
Order
: {ID
,AccountID
,OrderName
}
OrderDetails
: {ID
,OrderID
,Productcode
,ProductTitle
,...}
现在我想获得与给定帐户关联的'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
答案 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
的保留关键字。