Mam następującą strukturę bazy danych:
tabela USER,
tabela TYPE, ; join z MEET i USER
tabela MEET, ; join z MATCHDAY
tabela MATCHDAY
Co po kolei robię:
1. Pobranie typów użytkowników (jest 10 użytkowników) z wybranej kolejki.
2. Pobranie listy 10 meczy w wybranej kolejki
3. Połączenie za pomocą pętli meczy z typami użytkowników
Zapytanie jakie mam:
SELECT m.matchday_id, t.meet_id, t.host_type AS hostType, t.guest_type AS guestType, u.username AS username, u.shortname FROM user u LEFT JOIN type t ON t.user_id = u.id LEFT JOIN meet m ON t.meet_id = m.id AND m.matchday_id = 1 WHERE u.STATUS = 1 ORDER BY u.id
Złączenie listy meczy z listą typów:
foreach($meets as $meet){ foreach ($usersTypes as $types){ if($types['matchday_id'] != NULL){ if($meet['meet_id'] == $types['meet_id']) { $result[$types['meet_id']]['types'][] = $types['hostType'].' - '.$types['guestType']; } }else{ $result[$meet['meet_id']]['types'][] = '-'; } } $result[$meet['meet_id']]['meet_id'] = $meet['meet_id']; $result[$meet['meet_id']]['host'] = $meet['host']; $result[$meet['meet_id']]['guest'] = $meet['guest']; $result[$meet['meet_id']]['host_shortname'] = $meet['host_shortname']; $result[$meet['meet_id']]['guest_shortname'] = $meet['guest_shortname']; }
Niestety powyższe w przypadku typu 7 użytkowników zwraca mi 73 rekordy (3 NULL = 3 userom którzy nie typowali) dla 1 kolejki
i również 73 typy (z matchday_id = NULL) dla kolejki 2 itd.