Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Grupowanie po najnowszym rekordzie
Martin124
post
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 25.02.2013

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Damonsson
post
Post #2





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


W SELECT wyciągnij sobie max(id). ORDER BY nic nie da, bo najpierw następuje grupowanie, później sortowanie.
Go to the top of the page
+Quote Post
Martin124
post
Post #3





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 25.02.2013

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Damonsson
post
Post #4





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


  1. SELECT max(id), pesel FROM rachunki WHERE STATUS = 'Do Zaplaty' AND status_zaplaty = 'Splacono' GROUP BY pesel

To nie działa?

Ten post edytował Damonsson 26.02.2013, 11:24:01
Go to the top of the page
+Quote Post
Martin124
post
Post #5





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 25.02.2013

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Damonsson
post
Post #6





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
Martin124
post
Post #7





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 25.02.2013

Ostrzeżenie: (0%)
-----


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?

Ten post edytował Martin124 27.02.2013, 00:24:14
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 01:43