Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Z jednej tabeli, z grupowaniem.
Forum PHP.pl > Forum > Bazy danych > MySQL
lukasamd
Witam,
mam tabelę w których są pola: imie, wiek i grupa, powiedzmy że wygląda tak:

Imie1, 18, 1
Imie2, 19, 1
Imie3, 12, 2
Imie4, 31, 3
Imie5, 12, 1
Imie6, 13, 2
Imie7, 20, 3
Imie8, 21, 4

Jak zrobić zapytanie wyciągające z tabeli dane: w każdym wypadku tylko 1 z każdej grupy, do tego najstarsze. Wynik takiego zapytania powinien zwrócić:

Imie2, 19, 1
Imie6, 13, 2
Imie4, 31, 3
Imie8, 21, 4

Próbowałem używać GROUP BY ale nic z tego nie wychodziło :/ tzn. grupowało, ale nie wybierało najstarszych, tylko pierwszych lepszych. Może mnie ktoś oświecić?
artega
Powinno wystarczyć poniższe zapytanie
  1. SELECT imie, MAX(wiek) AS wiek, grupa FROM tabela GROUP BY grupa
yalus
Cytat
w każdym wypadku tylko 1 z każdej grupy, do tego najstarsze.


czyli chcesz wybrac najstarszego w grupie.
lukasamd
Cytat(artega @ 25.07.2008, 21:00:16 ) *
Powinno wystarczyć poniższe zapytanie
  1. SELECT imie, MAX(wiek) AS wiek, grupa FROM tabela GROUP BY grupa


Dzięki wielkie! Właśnie o to mi chodziło. Teraz już będę wiedział jak robić zapytania w takich wypadkach - też dawałem z max, ale miałem error bo nie przypisałem żadnej nazwy.

Jeszcze raz wielkie THX smile.gif
osiris
artega:
Twoje zapytanie jest niepoprawne, wykona sie ale najprawdopodobniej bedzie zwraca niepoprawne wyniki.
Wiecej info w mojej odpowiedzi do watku: http://forum.php.pl/Zapytanie_z_MAX__lacze...bel_t99139.html

Poprawne zapytanie powinno wygladac mniej wiecej tak:
  1. SELECT t1.imie, t1.wiek, t1.grupa
  2. FROM tabela t1 INNER JOIN ( SELECT grupa, MAX(wiek) AS max_wiek
  3. FROM tabela GROUP BY grupa) t2 ON t1.grupa = t2.grupa AND t1.wiek = t2.max_wiek
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.