Powiedz, że mam 2 tabele: Klienci i zamówienia. Klient może mieć wiele Zamówień.SQL Statement Pomoc - wybierz ostatnie zamówienie dla każdego klienta.
Teraz muszę pokazać każdemu klientowi ostatnie zamówienie. Oznacza to, że jeśli Klient ma więcej niż jedno Zamówienie, wyświetla tylko Zamówienie z najnowszym czasem wejścia.
Jest to, jak daleko udało mi się na własną rękę:
SELECT a.*, b.Id
FROM Customer a INNER JOIN Order b ON b.CustomerID = a.Id
ORDER BY b.EntryTime DESC
To oczywiście zwraca wszystkie Klienci z jednego lub więcej zamówień, pokazując najnowsze Order pierwszy dla każdego Klienta, który nie jest to, co chciałem. W tym momencie mój umysł utknął w rytmie, więc mam nadzieję, że ktoś wskaże mi właściwy kierunek.
Z jakiegoś powodu, I myślę, że Potrzebuję użyć gdzieś składni MAX, ale to właśnie mi ucieka właśnie teraz.
UPDATE: Po przejściu kilku odpowiedzi tutaj (jest dużo!), Zdałem sobie sprawę, że popełniłem błąd: Chciałem żadnego Klientowi swojej najnowszej płycie. Oznacza to, że jeśli nie ma Orderu, nie muszę go wymieniać.
UPDATE2: Naprawiono własne polecenie SQL, które prawdopodobnie nie spowodowało końca zamieszania wśród innych.
Twój stół klienta w tym przykładzie posiada idZamówienia. Czy to prawda? –
Tak, jak sugeruje SQL. – alextansc
Jeśli tabela klienta ma identyfikator zamówienia, pytanie nie ma sensu. Gdyby to była prawda, powiedziałbyś, że każde zamówienie ma innego klienta. Czy na pewno Twoja tabela zamówień nie ma identyfikatora klienta? –