Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: grupowanie po id sql czy array
Forum PHP.pl > Forum > PHP
trylas
Cześć,
mam takie zapytanie w ZF 1.12 i chciałbym zgrupowac po wartosci round_id(do celow testowych sa dwie rundy w kazdej rundzie po siedem gier) tylko, że dodanie ->group('round_id') zwraca dwa ostatnie rekordy z rundy. Moje pytanie dotyczy czy mam koniecznie przez sql'a wydobyc tak posortowane dane [runda1]=>7 tablic i [runda2]=7 tablic.... czy posortowac je juz z postaci kazdy mecz ma round_id i rozebrac to po kolei sprawdzajac kazda tablice czy jest z rundy 1 czy z 2 ?dzieki za pomoc
  1. public function getGames() {
  2. $select = $this->select()
  3. ->from(array('sc' => 'schedule'),'round_id')
  4. ->distinct('round_id')
  5. ->join(array('se' => 'season'), 'sc.season_id = se.season_id',array('season_id'=>'se.season'))
  6. ->join(array('lta' => 'league_table'), 'sc.host_id = lta.position_id',
  7. array('host_id'=>'lta.club_name'))
  8. ->join(array('ltb' => 'league_table'), 'sc.visitor_id = ltb.position_id',array('visitor_id'=>'ltb.club_name'))
  9. ->setIntegrityCheck(false);
  10. $schedule = $this->fetchAll($select)->toArray();
  11. return $schedule;
  12. }
cudny
Nie rozumiem - samo group bez having działa podobnie jak distinct, więc jeśli chcesz wydobyć oprócz rund też gry to musisz pozbyć się ->distinct('round_id') oraz nie używać group.
Pobrać dane dając order(round_id,gra_czy_cokolwiek_przyporządkowane_do_round_id) i masz wszytko czego trzeba.

Potem jeśli potrzebujesz tego jednak w osobnych tablicach to robisz:

  1. $res = array();
  2. foreach($result as $r) {
  3. if(!isset($res[$r['round_id']])) $res[$r['round_id']] = array();
  4. $res[$r['round_id']][$r['gra_id']] = $r;
  5. }
  6. echo '<pre>'; print_r($res);
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.