2011-01-04 9 views
1

ich versuche den letzten Auftrag für den einen bestimmten Kunden auf einer Rasteransicht zu zeigen, was ich getan habe ist, alle Aufträge für die Kunden zeigen, aber ich brauche die letzte BestellungLetzte Aufzeichnung von Aufträgen für bestimmte Kunden - SQL

hier ist mein SQL-Code

 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 seinen Wert aus einem Cookie zu erhalten, jetzt, wie kann ich die letzte Bestellung nur für einen Cookie-Wert „Tony“ zum Beispiel wählen?

Antwort

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 

In der Tat orders.order_id unter der Annahme ist eine Spalte Identität:

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

dies die erste bekommen bestelle nicht die letzte – Bader

+0

yeah: Ich war in einer Besprechung und erinnerte mich, dass ich die DESC vergessen hatte! –

3

zu verallgemeinern (und beheben ein wenig) Mitch Antwort, müssen Sie mit TOP verschönert SELECT-Klausel verwenden (@N) und ORDER VON ... DESC. Beachten Sie, dass ich TOP (@N), nicht TOP N, was bedeutet, dass Sie es als Argument an die gespeicherte Prozedur übergeben und zurückgeben kann, sagen wir, nicht mehr als 1 aber N letzten Bestellungen:

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

+1. von mir..... –

Verwandte Themen