lukasamd
25.07.2008, 18:55:56
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
25.07.2008, 20:00:16
Powinno wystarczyć poniższe zapytanie
SELECT imie, MAX(wiek) AS wiek, grupa FROM tabela GROUP BY grupa
yalus
25.07.2008, 21:35:41
Cytat
w każdym wypadku tylko 1 z każdej grupy, do tego najstarsze.
czyli chcesz wybrac najstarszego w grupie.
lukasamd
26.07.2008, 08:03:45
Cytat(artega @ 25.07.2008, 21:00:16 )

Powinno wystarczyć poniższe zapytanie
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
osiris
27.07.2008, 14:23:37
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.htmlPoprawne zapytanie powinno wygladac mniej wiecej tak:
SELECT t1.imie, t1.wiek, t1.grupa
FROM tabela t1 INNER JOIN ( SELECT grupa, MAX(wiek) AS max_wiek
FROM tabela GROUP BY grupa) t2 ON t1.grupa = t2.grupa AND t1.wiek = t2.max_wiek