Ben MySQL aşağıdaki tablolar vardır:
team: id, name, [more stuff]
person: id, name, team, [more stuff]
entry: id, name, team, [more stuff]
registrations: id, event_id, team, status
registration_people: registration_id, person_id
registration_entries: registration_id, entry_id
Ben veritabanını sorgulamak istiyorum, ve her kişi ve girişle ilgili ayrıntıları dönecekti; Kayıt göre gruplandırılmış. Ben SQL kadar olabildiğince yapmak için yılda öğrendim. Ancak, PHP bir sürü iş yapmadan tek bir sorguda bu oluşturmak için iyi bir yol göremiyorum. Bunu yapmanın yolu naif [yalancı] olacaktır:
$registrations = $model->get_registrations($event_id);
foreach ($registrations as $registration)
{
$registration['people'] = $model->get_people_in_registration($registration['id']);
$registration['entries'] = $model->get_entries_in_registration($registration['id']);
}
return $registrations;
Bu kod sunucuya birçok yuvarlak gezileri yapar ve kullanılmamalıdır. Ben diğer fikir gibi bir şey yapmak oldu:
$registrations = $model->get_registrations($event_id);
$registration_entries = $model->get_registration_entries($event_id);
$registration_people = $model->get_registration_people($event_id);
foreach ($registrations as $r)
$reg[$r['id']] = $r;
foreach ($registrations_entries as $e)
$reg[$e['registration_id']]['entries'][] = $e;
foreach ($registrations_people as $p)
$reg[$p['registration_id']]['people'][] = $p;
return $reg;
Nerede get_registration_entries/get_registration_people
bir katılmak ve tüm kapmak yok registration_entries
$event_id
olarak kayıtları ile ilişkili olduğunu. Ben bir PHP katılmak yapıyorum gibi Ancak, bu gibi görünüyor; Benim için bunu yapmak için SQL almak mümkün olabilir zaman. Ben sadece paranoyak olmak muyum, ya da ben burada bir şey eksik?