2

私が見つけようとしている次のSQL Server 2008 R2クエリから:

注文詳細テーブルに特定の製品を配置した顧客とその注文。

この製品は相互参照テーブルから照合する必要があります。

クエリは別のテーブル (アクティベーション) も調べており、そこに注文 ID が見つかった場合、それらは無視されます。

これが私のクエリです:

Select O.CustomerId, O.OrderId
from Orders O 
    inner join Customers C
        on O.CustomerId=C.Customerid
where O.orderid not in
(
    Select orderid 
    from activations
)
and OrderId In
(
    Select orderid 
    from  Orderdetails
    WHERE EXISTS
    (
        select * 
        from  OrderActivationCrossRef
        Where Orderdetails.productId=OrderActivationCrossRef.productId
    )
)

このクエリを改善できますか?また、LINQ に相当するものは何ですか?
前もって感謝します。

4

2 に答える 2

0

ここにSQLがあります

Select O.CustomerId, O.OrderId
from Orders O 
    inner join Customers C on O.CustomerId=C.Customerid -- forces items that exist in customers
    left join activations a on a.orderid = O.orderid
    join orderdetails d on d.orderid = O.orderid  -- forces only items that exist in details
    join OrderActivationCrossRef c on d.productId = c.productId  -- forces only items that exist in crossref
where 
  a.orderid is null -- forces items that don't exist in activations
于 2013-04-09T16:57:04.007 に答える