1

私はSQLが初めてです。

これが私の質問です

要件は、2 つのテーブルを結合して合計数を取得することです。

Order: { ID, AccountID, OrderName}

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

ここで、特定のアカウントに「Orderdetails」が関連付けられている注文の総数を取得したいと考えています。

より詳しい情報..

これら 2 つのテーブルを結合しOrderIDAccountId合計数を取得します。

重複も削除します。これは、注文 ID が製品コードの 2 番目のテーブルで繰り返されることを意味します。

注文の詳細なしで注文が挿入される場合があります。これは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

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)

Orderところで、これは の予約済みキーワードであるため、 table を呼び出さない方がよいでしょうorder by

于 2013-09-10T06:15:40.723 に答える