Moderator |
|
Mja je kunt het opslaan in een aparte tabel, maar je kunt het ook berekenen in PHP. Ik neem aan dat je ergens een koppeltabel o.i.d. hebt waarin opgeslagen is welke trainer X een dienstverband Y heeft?
Als je dit eerst bepaalt, en dat vervolgens gebruikt om de query voor wedstrijden op te bouwen?
En daarna zou je je dienstverbanden-dataset nog uit kunnen breiden met de wedstrijden die daarbij horen?
Zoiets dus:
<?php
// http://www.sitemasters.be/forum/2/41099/PHP_&_SQL/selecteren_met_uitgebreide_datum_treeks
// gegeven een array met dienstverbanden van de vorm:
$dienstverbanden = array(
1 => array('van' => 'yyyy-mm-dd', 'tot' => 'yyyy-mm-dd', 'wedstrijden' => array()),
5 => array('van' => 'yyyy-mm-dd', 'tot' => 'yyyy-mm-dd', 'wedstrijden' => array()),
);
$wedstrijden = array();
// bouw je de query voor het raadplegen van de wedstrijden tabel (als er iets te raadplegen valt):
if (count($dienstverbanden)) {
$query = 'SELECT * FROM wedstrijden WHERE ';
$where = array();
foreach ($dienstverbanden as $dienstverband) {
$where[] = 'wedstrijd_datum BETWEEN ('.$dienstverband['van'].' AND '.$dienstverband['tot'].')';
}
$query .= implode(' OR ', $where);
// voer query uit
$res = ...
// loop door resultaten
while ($row = ...) {
// sla wedstrijd data op op id
$wedstrijden[$row['wedstrijd_id']] = $row;
// bepaal in welk dienstverband deze wedstrijd valt, dit keer in PHP
foreach ($dienstverbanden as $d_id => $d_data) {
if ($row['wedstrijd_datum'] >= $d_data['van'] && $row['wedstrijd_datum'] <= $d_data['tot']) {
// de wedstrijd valt onder dit dienstverband
$dienstverbanden[$d_id]['wedstrijden'][] = $row['wedstrijd_id'];
break; // klaar met zoeken
}
}
}
// nu bevat $dienstverbanden alle relevante data,
// en de data van de wedstrijden kun je opzoeken in $wedstrijden m.b.v. de wedstrijd-id's
}
?>
<?php // http://www.sitemasters.be/forum/2/41099/PHP_&_SQL/selecteren_met_uitgebreide_datum_treeks // gegeven een array met dienstverbanden van de vorm: $dienstverbanden = array( 1 => array('van' => 'yyyy-mm-dd', 'tot' => 'yyyy-mm-dd', 'wedstrijden' => array()), 5 => array('van' => 'yyyy-mm-dd', 'tot' => 'yyyy-mm-dd', 'wedstrijden' => array()), ); // bouw je de query voor het raadplegen van de wedstrijden tabel (als er iets te raadplegen valt): if (count($dienstverbanden)) { $query = 'SELECT * FROM wedstrijden WHERE '; foreach ($dienstverbanden as $dienstverband) { $where[] = 'wedstrijd_datum BETWEEN ('.$dienstverband['van'].' AND '.$dienstverband['tot'].')'; } // voer query uit $res = ... // loop door resultaten while ($row = ...) { // sla wedstrijd data op op id $wedstrijden[$row['wedstrijd_id']] = $row; // bepaal in welk dienstverband deze wedstrijd valt, dit keer in PHP foreach ($dienstverbanden as $d_id => $d_data) { if ($row['wedstrijd_datum'] >= $d_data['van'] && $row['wedstrijd_datum'] <= $d_data['tot']) { // de wedstrijd valt onder dit dienstverband $dienstverbanden[$d_id]['wedstrijden'][] = $row['wedstrijd_id']; break; // klaar met zoeken } } } // nu bevat $dienstverbanden alle relevante data, // en de data van de wedstrijden kun je opzoeken in $wedstrijden m.b.v. de wedstrijd-id's } ?>
|