Beste PhpHulpers,
Ik ben bezig met een klein scriptje om een overzicht mee te kunnen uitdraaien. Nu heb ik het overzicht al (omdat het snel moest worden geleverd) maar volgens mij is het niet 'efficient'. Vandaar de vraag of iemand een betere manier weet om dit op te lossen:
Ik heb op dit moment 3 tabellen:
<?php
user
----
id
name
diploma
----
id
number
date
user_id
type_id
diplomaType
----
id
name
?>
Wat ik wil is van elke user alle diploma's ophalen na 2015. Op dit moment heb ik dat opgelost door eerst alle gebruikers op te halen met een query en vervolgens per gebruiker alle diploma's op te halen.
<?php
$users = 'select id from user'; //het hele prepared gebeuren heb ik hier weggehaald om het kort te houden.
foreach($users as $u)
{
$diplomas = select u.name, d.number, dt.name from user u
JOIN diploma d on u.id = d.user_id
JOIN diplomaType dt ON d.type_id = dt.id
WHERE u.id = $u AND DATE(YEAR) > 2015; //deze dingen merge ik naar een array als resultaat
}
?>
Heb niet het hele script gepost anders wordt het zo lang. Nu zijn er 500 users wat betekent dat ik 500x de join query moet uitvoeren. Is het mogelijk om een overzicht uit de database te halen zonder te loopen door alle users en 500x een query uit te voeren? Want volgens mij is dit aardig 'inefficient'?
--edit code tags toegevoegd--
2.554 views