Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Grupowanie po najnowszym rekordzie
Forum PHP.pl > Forum > Bazy danych > MySQL
Martin124
Witam serdecznie mam takie zapytanie
  1. SELECT * FROM rachunki WHERE STATUS = 'Do Zaplaty' AND status_zaplaty = 'Splacono' GROUP BY pesel ORDER BY id DESC


Tabela zawiera rachunki klientów unikalnym identyfikatorem klienta jest jego pesel dany klient może mieć po kilka rachunków z różnymi parametrami które muszę w tym zapytaniu wyciągnąć, potrzebuję wyciągnąć ostanie rachunki klientów te najnowszą datą spełniające warunki klauzuli WHERE problem jest taki że gdy grupuję po peslu aby dany klient się nie powtarzał to wyświetla mi pierwszy rachunek napotkany w tabeli a ja chciałbym ten ostatni.

Proszę o pomoc.
Damonsson
W SELECT wyciągnij sobie max(id). ORDER BY nic nie da, bo najpierw następuje grupowanie, później sortowanie.
Martin124
Dzięki ale próbowałem z funkcjami agregującymi nic mi nie pomogło chyba że nie potrafię odpowiednio sformułować zapytania.
Potrzebuję po prostu wyciągnąć ostatni rachunek każdego unikalnego klienta.
Damonsson
  1. SELECT max(id), pesel FROM rachunki WHERE STATUS = 'Do Zaplaty' AND status_zaplaty = 'Splacono' GROUP BY pesel

To nie działa?
Martin124
To znaczy działać działa tylko niestety nadal nie tak jak potrzebuje ponieważ zwraca mi dane pierwszego rachunku (pierwsze wystąpienie danego pesla w tabeli) każdego klienta a ja potrzebuję dane tego ostatniego rachunku (ostatnie wystąpienie danego pesla w tabeli) czyli mamy np. klienta o numerze pesel 1234 i ten klient w odstępie miesiąca ma 6 rachunków to ja potrzebuję ten 6 rachunek ostatni a pozostałe 5 rachunków ma nie pokazywać a mi w tym momencie wyświetla 1 rachunek i pozostałe 5 nie wyświetla.
Damonsson
Aaa, czyli chcesz wydobyć te rachunki, myślałem, że samo id. To wtedy coś takiego mniej więcej

  1. SELECT *
  2. FROM (
  3. SELECT *
  4. FROM rachunki
  5. ORDER BY id DESC
  6. ) AS temp
  7. GROUP BY pesel
Martin124
Jest już prawie dobrze tylko teraz owszem wyświetla ostatni rachunek spełniający warunek np status_splaty = 'Splacono' a mi chodzi oto że gdy dany klient nie spełnia warunków w ostatnim swoim rachunku to ma tego klienta i rachunku nie wyświetlać, a teraz wyświetla ostatni spełniający warunki rachunek klienta.
Sorki że tak nudzę.

Już sobie dałem radę założyłem warunki wykluczające w pętli już po pobraniu z bazy.
Wielkie dzięki masz u mnie dobre piwo.

Mam jeszcze pytanie jak w tym zapytaniu postawić warunek WHERE tak aby selekcjonował po tym ostatnim rekordzie danego klienta?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.