2013-03-03 69 views
1

的兩個列我想顯示的的OrderID所有訂單但如放置畢竟下訂單的底元市場的。比較同一行

我使用的fllowing查詢

select 
    Orders.OrderID 
from 
    Orders 
where 
    Orders.OrderDate > (
     select 
      Orders.OrderDate 
     from 
      Orders 
     where 
      Orders.CustomerID = (
       select 
        Customers.CustomerID 
       from 
        Customers 
       where 
        Customers.CompanyName='Bottom-Dollar Markets' 
      ) 
     ); 

,但它給人的錯誤子查詢returened多個值

我使用Northwind數據庫

回答

5

無論你的子查詢可以返回多行,當你使用標量比較操作時,這是不允許的 - 分別爲>=,在你的情況下。

試試這個:

select Orders.OrderID 
from Orders 
where Orders.OrderDate > (
    select max(Orders.OrderDate) 
    from Orders 
    where Orders.CustomerID in (
    select Customers.CustomerID 
    from Customers 
    where Customers.CompanyName='Bottom-Dollar Markets' 
) 
); 

你實際上並不需要比較所有訂單因爲如果一個客戶的訂單是不是由底部美元的市場下單,則最新訂單更大它遵循它也比先前的訂單更大。

或者這將與一個JOIN工作:

select Orders.OrderID 
from Orders 
where Orders.OrderDate > (
    select max(Orders.OrderDate) 
    from Orders join Customers on Orders.CustomerID = Customers.CustomerID 
    where Customers.CompanyName='Bottom-Dollar Markets' 
);