Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] Pomoc w zapytaniu.
Forum PHP.pl > Forum > Przedszkole
neo1986kk
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.
mmmmmmm
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
neo1986kk
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:)
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.