Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: wiersze z max wartością dla każdego id w tabeli
Forum PHP.pl > Forum > Bazy danych > MySQL
sobstel
chciałbym wyciągnąć z bazy całe wiersze, w których dla danego id występuje największa wartość, czyli np. dla tebeli

Kod
name    id    value
a    1    3
b    1    5
c    1    2
d    2    1
e    2    8
f    2    4
g    1    7


chciałbym w wyniku wykonanego zapytania otrzymać

Kod
g    1    7
e    2    8


wymyśliłem zapytanie poniżej, ale zastanaiwam się czy nie dałoby sie tego zrobic jakoś zgrabniej

  1. SELECT *
  2. FROM files
  3. WHERE (id, value) IN (SELECT id, MAX(value)
  4. FROM files
  5. GROUP BY id)
FiDO
Zapraszam do lektury http://forum.php.pl/index.php?showtopic=30...ndpost&p=175959 (nie tylko tego posta, caly temat jest o bardzo podobnym do Twojego problemie)
Nie bedzie to moze zgrabniej wygladalo, ale powinno byc wydajniejsze i bez podzapytan.
spenalzo
http://dev.mysql.com/doc/refman/4.1/en/exa...-group-row.html

Czy o to chodzi?
FiDO
Tak, to jest to, ale ten sposob jest malowydajny co jest zreszta tam napisane.
Ten, do ktorego podalem linka jest zaczerpniety gdzies z komentarzy w manualu do mysqla i wychodzi lepiej na tle max-concat'a.
spenalzo
Wiem, czytałem - linka dałem po to, jakby ktoś pytał czy to w jednym zapytaniu mo żna zrobić tongue.gif
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.