2011-01-04 2 views
1

я пытаюсь показать последний заказ на конкретный клиент на виде сетки, что я сделал, показываю все заказы клиента, но мне нужен последний заказПоследняя запись заказов для конкретного клиента - SQL

вот мой SQL код

 SELECT orders.order_id, orders.order_date, 
    orders.payment_type, orders.cardnumber, packages.Package_name, 
orders.package_id, packages.package_price 
    FROM orders INNER JOIN packages ON orders.package_id = packages.Package_ID 
    WHERE (orders.username = @username) 

@username получить его значение из печенья, теперь, как я могу выбрать последний заказ только для значения печенья «Тони», например?

ответ

1
SELECT top 1 
    orders.order_id, 
    orders.order_date, 
    orders.payment_type, 
    orders.cardnumber, 
    packages.Package_name, 
    orders.package_id, 
    packages.package_price 
FROM orders 
INNER JOIN packages ON orders.package_id = packages.Package_ID 
WHERE (orders.username = @username) 
ORDER BY orders.order_date DESC 

На самом деле предполагающей orders.order_id является столбцом Идентичность:

SELECT top 1 
    orders.order_id, 
    orders.order_date, 
    orders.payment_type, 
    orders.cardnumber, 
    packages.Package_name, 
    orders.package_id, 
    packages.package_price 
FROM orders 
INNER JOIN packages ON orders.package_id = packages.Package_ID 
WHERE (orders.username = @username) 
ORDER BY orders.order_id DESC 
+1

это будет получить первый заказывай не последний – Bader

+0

да: я был на встрече и помнил, что забыл DESC! –

3

Обобщая (и исправить немного) ответ Митча, вам нужно использовать SELECT, пункт украшенную TOP (@N) и ORDER BY ... DESC. Обратите внимание, что я использую TOP (@n), а не TOP N, что означает, что вы можете передать его в качестве аргумента для хранимой процедуры и вернуться, скажем, не 1, но N Последние заказы:

CREATE STORED PROCEDURE ... 
    @N int 
... 
SELECT TOP(@N) ... 
ORDER BY ... DESC 
+0

+1. от меня..... –

Смежные вопросы