stel:
Nu wil ik graag een lijstje met alle bedrijven en per bedrijf alle klanten van dat bedrijf.
dit kost mij dus per bedrijf een query voor zijn klanten:
Kan dat ook anders? bijvoorbeeld:
Die ARRAY vervangen door CONCAT (welke wel bestaat in sommige SQL implementaties) kan wel.
Maar dit is een heel veel voorkomend probleem. Die eerste methode is lelijk en ik zou graag iets beters zien. Waarom in PHP de Data bij elkaar schrapen, de SQL server is daar veel beter in. Maar hoe precies. Iemand met hints?
-Ozy
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| bedrijf === bid KEY -- bedrijf id naam -- naam bedrijf klant === kid KEY -- klant id naam -- naam klant -- klanten hebben meerdere bedrijven en bedrijven meerdere klanten: bedrijf_klant === bid INT -- een bedrijf kid INT -- een klant |
Nu wil ik graag een lijstje met alle bedrijven en per bedrijf alle klanten van dat bedrijf.
dit kost mij dus per bedrijf een query voor zijn klanten:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
| $q = "SELECT naam, bid FROM bedrijf"; $r = sql_array($db, $q) while ($a = sql_fetch($r)) { echo "<div>$a[naam]</div><div>"; //stomme sub query vanuit php $qq = "SELECT naam FROM klant, bedrijf_klant WHERE klant.kid=bedrijf_klant.kid AND bid=$a[bid]"; $rr = sql_array($db, $qq); while ($aa = sql_fetch($rr)) { echo "<span>$aa[naam]</span>"; } echo "</div>"; } |
Kan dat ook anders? bijvoorbeeld:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
| $q = " SELECT bedrijf.naam, ARRAY(klant.naam) as klanten FROM klant, bedrijf, bedrijf_klant WHERE bedrijf_klant.bid=bedrijf.bid AND bedrijf_klant.kid=klant.kid GROUP BY bedrijf.bid; "; // das dus een JOIN, maar dit is lekker helder while ($a = sql_fetch($db, $q) { echo "<div>$a[naam]</div><div>"; // uberdebuub barba truuc! weg met die sub query foreach ($a['klanten'] as $klant) echo "<span>$klant</span>"; echo "</div>"; } |
Die ARRAY vervangen door CONCAT (welke wel bestaat in sommige SQL implementaties) kan wel.
Maar dit is een heel veel voorkomend probleem. Die eerste methode is lelijk en ik zou graag iets beters zien. Waarom in PHP de Data bij elkaar schrapen, de SQL server is daar veel beter in. Maar hoe precies. Iemand met hints?
-Ozy