2015-02-10 3 views
0

У меня есть следующая таблицаSql - получить предыдущий заказ, который использует элемент

Order_Item

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

вход пользователя:item_id и order_id например: 3 & 299, соответственно, в приведенном выше примере.

Требование: Необходимо срочно найти последний заказ, который продал товар с item_id 3. (215 order_id в этом случае)

Поскольку вход (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

+0

@Tarik Edited вопрос. Пожалуйста, смотрите. – Zeus

ответ

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

+0

Вы правы, я не понял, что идентификатор заказа - это ключевой столбец здесь. –

1

попробовать этот Oracle

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 Server

select top 1 * 
    from order_item 
    where order_id <299 and item_id = 3 
    order by order_id desc 
Смежные вопросы