Join in associative array
Barry
01/08/2008 21:34:00Goedenavond,
ik heb een simpele tabel combinatie:
de klant_id in de tabel facturen staat in een verband met klanten.id.
Het is dus een klant (one) to facturen (many) relatie.
Ik heb natuurlijk meer facturen per klant. Met welke join kan ik nu in php alle facturen in een subarray van die klant krijgen, in plaats van elke factuur in een rij waar ook de klantgegevens weer staan.
Een voorbeeldje:
misschien een beetje lastig uit te leggen, maar met welke join (en misschien group by?) kan ik dit voormekaar krijgen? Ik neem aan dat ik later in php mysql_fetch_assoc() moet gebruiken?
bvd, groet,
Barry
ik heb een simpele tabel combinatie:
de klant_id in de tabel facturen staat in een verband met klanten.id.
Het is dus een klant (one) to facturen (many) relatie.
Ik heb natuurlijk meer facturen per klant. Met welke join kan ik nu in php alle facturen in een subarray van die klant krijgen, in plaats van elke factuur in een rij waar ook de klantgegevens weer staan.
Een voorbeeldje:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
// nu heb ik:
klant.id - klant.naam - factuur.factuurnummer - factuur.totaalbedrag
1 - pietje - CS123 - 100
2 - jantje - CS222 - 10
2 - jantje - CS333 - 20
// maar ik wil
1 - pietje - CS123 - 100
2 - jantje /*en dan een subarray*/
array( CS222 - 10, CS333 - 20)
klant.id - klant.naam - factuur.factuurnummer - factuur.totaalbedrag
1 - pietje - CS123 - 100
2 - jantje - CS222 - 10
2 - jantje - CS333 - 20
// maar ik wil
1 - pietje - CS123 - 100
2 - jantje /*en dan een subarray*/
array( CS222 - 10, CS333 - 20)
misschien een beetje lastig uit te leggen, maar met welke join (en misschien group by?) kan ik dit voormekaar krijgen? Ik neem aan dat ik later in php mysql_fetch_assoc() moet gebruiken?
bvd, groet,
Barry
PHP hulp
16/05/2024 18:47:31Jan Koehoorn
01/08/2008 23:31:00Je wilt dus een rijtje met alle klanten met hun factuurnummers erachter?
SELECT klant.naam, factuur.factuurnummer
FROM klant
LEFT JOIN factuur ON klant.id = facturen.klant_id
ORDER BY klant.naam
Daarna doe je bij het fetchen dit:
Code niet getest.
SELECT klant.naam, factuur.factuurnummer
FROM klant
LEFT JOIN factuur ON klant.id = facturen.klant_id
ORDER BY klant.naam
Daarna doe je bij het fetchen dit:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
$naam = '';
while ($row = mysql_fetch_assoc ($res)) {
if ($naam != $row['naam']) {
echo '<h3>' . $row['naam'] . '</h3>';
$naam = $row['naam'];
}
echo '<p>' . $row['factuurnummer'] . '</p>';
}
?>
$naam = '';
while ($row = mysql_fetch_assoc ($res)) {
if ($naam != $row['naam']) {
echo '<h3>' . $row['naam'] . '</h3>';
$naam = $row['naam'];
}
echo '<p>' . $row['factuurnummer'] . '</p>';
}
?>
Code niet getest.