2015-02-10 32 views
0

以前爲了我有以下表的Sql - 獲得其中使用項

order_item

order_id| item_id 
    -------------------------------- 
    213 | 3 
    215 | 3 
    244 | 2 
    299 | 3 
    400 | 3 

用戶輸入:item_idorder_id例如:3 & 299分別在上面的例子。

要求:我需要立即查找最後一個訂單,該訂單用item_id 3銷售該商品。 (在這種情況下215 order_id)

因爲input(order_id,item_id)是(299,3)。從表格中可以看出,近期已售出第3項的訂單是order_id 215,因此我需要將(215,3)行返回給用戶。

我試過以下,我知道這是錯誤的,因爲我不知道如何獲得上述信息。

select (select oi.item_id from order_item oi where oi.order_id < order_id and rownum =1) 
from order_item where order_id = 299 and item_id = 3 
+0

請說明您的要求。不知道你想要什麼。 – Tarik 2015-02-10 20:59:47

+0

@Tarik編輯了這個問題。請看一看。 – Zeus 2015-02-10 21:14:20

回答

1

這應該這樣做:

select max(order_id) from order_item where order_id <299 and item_id =3 
0

你可以試試這個查詢嗎?

select max(order_id) from order_item where order_id < ( 
select order_id from order_item where order_id = 299 and item_id = 3 ) and item_id = 3; 
+0

過於複雜。 – Tarik 2015-02-10 21:17:46

+0

你是對的,我沒有意識到訂單ID是這裏的關鍵列。 – 2015-02-10 21:23:25

1

試試這個 甲骨文

select order_id,item_id 
     from order_item 
     where order_id <299 and item_id = 3 
     and rownum = 1 
     order by order_id desc 

SQL服務器

select top 1 * 
    from order_item 
    where order_id <299 and item_id = 3 
    order by order_id desc