Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL] Pomoc w zapytaniu.
neo1986kk
post
Post #1





Grupa: Zarejestrowani
Postów: 561
Pomógł: 3
Dołączył: 2.02.2009

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


Witam, mam taką bazę danych

id | klient | nr | rodzaj | wersja
1 | 1 | 1 | 1 | 1
2 | 1 | 1 | 1 | 2
3 | 2 | 1 | 1 | 1


wersji może być nawet 50, ale chodzi o to żeby dla jednego klienta + nr zapytanie wybieralo najwyższą dostępną wersję, czyli po zapytaniu SQL wynik powinien być taki:

klient | nr | wersja(max)
1 | 1 | 2
2 | 1 | 1

Za pomocą dwóch zapytań bym zrobił to tak, ściągnął bym najpierw wszystkie rekordy, a później w pętli następnym zapytaniem wyciągnął najwyższą wartość i zapisał do tablicy, no i dopiero tę tablicę przekazałbym do wyświetlenia.

Macie może pomysł jak zrobić to za pomocą jednego zapytania?
Dzięki.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
mmmmmmm
post
Post #2





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


Kilka.
  1. SELECT DISTINCT klient, nr, (SELECT max(wersja) FROM tabela WHERE klient=t.klient AND nr=t.nr) max_wersja FROM tabela t

  1. SELECT klient, nr, max(wersja) max_wersja FROM tabela t GROUP BY klient, nr

  1. SELECT DISTINCT klient, nr, max_wersja FROM tabela t JOIN (SELECT klient, nr, max(wersja) max_wersja FROM tabela GROUP BY klient, nr) sub ON sub.klient=t.klient AND t.nr=sub.nr


Ten post edytował mmmmmmm 12.12.2014, 12:38:00
Go to the top of the page
+Quote Post
neo1986kk
post
Post #3





Grupa: Zarejestrowani
Postów: 561
Pomógł: 3
Dołączył: 2.02.2009

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


pierwszy sposób, bardzo dobrze wybiera z bazy, jednak bardzo długo wyszukuje rekordów, dla 12 000 - 30 sek to zbyt mało

drugi sposób robi to w 5 sek:)

Ten post edytował neo1986kk 12.12.2014, 13:39:51
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 24.08.2025 - 07:51