Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Z jednej tabeli, z grupowaniem., Nie wiem jak to ująć...
-lukasamd-
post 25.07.2008, 18:55:56
Post #1





Goście







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ć?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
artega
post 25.07.2008, 20:00:16
Post #2





Grupa: Zarejestrowani
Postów: 174
Pomógł: 42
Dołączył: 22.07.2007
Skąd: /dev/random

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


Powinno wystarczyć poniższe zapytanie
  1. SELECT imie, MAX(wiek) AS wiek, grupa FROM tabela GROUP BY grupa
Go to the top of the page
+Quote Post
yalus
post 25.07.2008, 21:35:41
Post #3





Grupa: Zarejestrowani
Postów: 281
Pomógł: 0
Dołączył: 8.07.2005
Skąd: EU

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


Cytat
w każdym wypadku tylko 1 z każdej grupy, do tego najstarsze.


czyli chcesz wybrac najstarszego w grupie.


--------------------
człowiek nie sznurek wszystko wytrzyma
Go to the top of the page
+Quote Post
-lukasamd-
post 26.07.2008, 08:03:45
Post #4





Goście







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
Go to the top of the page
+Quote Post
osiris
post 27.07.2008, 14:23:37
Post #5





Grupa: Zarejestrowani
Postów: 121
Pomógł: 15
Dołączył: 19.07.2007

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


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


Ten post edytował osiris 27.07.2008, 14:36:20
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 11:05