Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Zapytanie MYSQL
Forum PHP.pl > Forum > Przedszkole
-michalo-
  1. $this->DB->build( array(
  2. 'select' => 'ss.*',
  3. 'from' => array( 'servers_stats' => 'ss' ),
  4. 'order' => 'ss.id DESC, s.premium_war DESC',
  5. 'group' => 'ss.server_id',
  6. 'where' => 's.premium=1',
  7. 'add_join' => array(
  8. 'select' => 's.*',
  9. 'from' => array( 'servers' => 's' ),
  10. 'where' => 's.id=ss.server_id',
  11. 'type' => 'left',
  12. ),
  13. 'select' => 'p.*',
  14. 'from' => array( 'servers_premium' => 'p' ),
  15. 'where' => 's.id=p.server_id',
  16. 'type' => 'left',
  17. ),
  18. )
  19. ) );



Pobieranie z tabel:

servers, servers_premium, servers_stats

Servers - sortowanie według premium_war malejąco
Servers_stats grupowanie według server_id i sortowanie OSTATNICH wyników ( czyli ostatnich grupowań ), w takim sensie że w bazie są np:

ID liczba liczba2 server_id
1 2 3 1
2 3 4 1
3 2 3 2
4 3 4 2

I chcę pobrać ostatnie wyniki ( liczba, liczba2) dla danego server_id grupując. I teraz mój problem - nie pobiera ostatnich wyników z grupowania, co jest nie tak?
pmir13
Mysql wykonuje sortowanie po grupowaniu. Przy grupowaniu można być pewnym wartości tylko tych kolumn, według których grupujemy oraz wyniku funkcji agregujących (czyli COUNT, SUM, MAX, MIN i tym podobnych). Grupowanie niejako spłaszcza większą ilość rekordów w jeden, a do pozostałych kolumn bierze pierwszą z brzegu (czyli nieokreśloną) wartość. Nigdy nie ma pewności z którego rekordu z grupy weźmie tą wartość. I sortowanie w niczym tu nie pomoże, bo nastąpi dopiero po tym spłaszczeniu. Mysql i tak pozwala na składnię w której do selecta można wrzucić te inne kolumny, bo w pozostałych DBMSach najzwyczajniej otrzymałbyś błąd składni. Jeśli chcesz mieć najwyższą lub najniższą wartość z grupy to musisz użyć MAX lub MIN, a jeśli do tego odpowiadające im pozostałe kolumny to musisz ponownie dołączyć tą samą tabelę według tych wartości i grupy.
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.