Problème SQL date null comment remplacer par 0 ?!
Résolu
rdbn
Messages postés
95
Date d'inscription
Statut
Membre
Dernière intervention
-
rdbn Messages postés 95 Date d'inscription Statut Membre Dernière intervention -
rdbn Messages postés 95 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- N'affichez que les personnes de calais ayant 20 ans et une note supérieure ou égale à 12.
- Remplacer disque dur par ssd - Guide
- Remplacer par word - Guide
- Comment ouvrir un fichier dat - Guide
- Quel site pour remplacer coco - Accueil - Réseaux sociaux
- Comment remettre son pc a 0 - Guide
4 réponses
Bonjour,
Sachant que tu poses ta question dans le forum base de données... ce qui nous aurait interessé c'est la requête SQL ... pas ce que tu en fais après ..
Sachant qu'Il est possible, dans la requête, de générer les dates "manquantes" entre deux dates ...
Mais bon, ne sachant rien de ta requête SQL et voyant que ton code est du PHP je déplace donc ta question dans le forum PHP.
Et donc, en PHP, il faut :
1 - Que tu alimentes ta variables $mois, non pas avec le résultat de la requête SQL ... mais que tu te créés un code qui te permette de générer la liste voulue.
(facile.. visiblement tu veux les douze mois de l'année)
2 - lorsque tu récupères le "nombre" tu regardes si il est associé à un mois.. sinon tu retourne 0
Sachant que tu poses ta question dans le forum base de données... ce qui nous aurait interessé c'est la requête SQL ... pas ce que tu en fais après ..
Sachant qu'Il est possible, dans la requête, de générer les dates "manquantes" entre deux dates ...
Mais bon, ne sachant rien de ta requête SQL et voyant que ton code est du PHP je déplace donc ta question dans le forum PHP.
Et donc, en PHP, il faut :
1 - Que tu alimentes ta variables $mois, non pas avec le résultat de la requête SQL ... mais que tu te créés un code qui te permette de générer la liste voulue.
(facile.. visiblement tu veux les douze mois de l'année)
$mois = [1,2,3,4,5,6,7,8,9,10,11,12];
2 - lorsque tu récupères le "nombre" tu regardes si il est associé à un mois.. sinon tu retourne 0
$orga = $queryResult2[0]['organisme']; foreach($queryResult2 as $result) { $nbrEvent[] = isset($result['mois']) && !empty($result['nombre']) ? $result['nombre'] : 0 ; }
Bonjour, merci pour la réponse mais comment la comparaison ce feras t'elle avec les 12 mois qu'on à généré "$mois", dans la boucle on vérifie seulement dans "queryResult2" si le mois existe et si le nombre d'éven n'est pas vide.
Par exemple on sais qu'il manque dans le tableau lorsqu'on récupère le tableau de la bdd le mois 6 et 7.
Car il n'y a aucun évènement avec une date de ces mois ci. donc aucun mois 6 et 7 en retour dans ma requête.
donc de base il n'y a pas 12 mois.
Peut être que se sera plus clair avec la requête mais la encore une fois es ce qu'on ce déplace du forum :/
Par exemple on sais qu'il manque dans le tableau lorsqu'on récupère le tableau de la bdd le mois 6 et 7.
Car il n'y a aucun évènement avec une date de ces mois ci. donc aucun mois 6 et 7 en retour dans ma requête.
donc de base il n'y a pas 12 mois.
Peut être que se sera plus clair avec la requête mais la encore une fois es ce qu'on ce déplace du forum :/
$rawQuery1 = 'SELECT distinct organisme, COUNT(debut) AS nombre FROM partenaire JOIN user ON partenaire.id = user.partenaire_id JOIN evenement ON user.id = evenement.user_id WHERE debut < cast(now() as DATE) AND debut > cast((now() + INTERVAL -1 year) as DATE) group by organisme ORDER BY nombre DESC LIMIT 5;'; $rawQuery2 = 'SELECT distinct organisme,month(debut) mois, COUNT(debut) AS nombre FROM partenaire JOIN user ON partenaire.id = user.partenaire_id JOIN evenement ON user.id = evenement.user_id WHERE debut < cast(now() as DATE) AND debut > cast((now() + INTERVAL -1 year) as DATE) AND organisme In (:org1, :org2, :org3, :org4, :org5) group by organisme, mois ORDER BY organisme;';
le code :
$queryResult2 = $result2->fetchAllAssociative(); $mois = [1,2,3,4,5,6,7,8,9,10,11,12]; foreach($queryResult2 as $result) { $orga = $queryResult2[0]['organisme']; $nbrEvent[] = isset($result['mois']) && !empty($result['nombre']) ? $result['nombre'] : 0; }
Bonjour, voici le résultat
queryResult2:
array(10) {
[0]=>
array(3) {
["organisme"]=>
string(4) "org3"
["mois"]=>
string(1) "1"
["nombre"]=>
string(1) "2"
}
[1]=>
array(3) {
["organisme"]=>
string(4) "org3"
["mois"]=>
string(1) "2"
["nombre"]=>
string(1) "3"
}
[2]=>
array(3) {
["organisme"]=>
string(4) "org3"
["mois"]=>
string(1) "3"
["nombre"]=>
string(1) "4"
}
[3]=>
array(3) {
["organisme"]=>
string(4) "org3"
["mois"]=>
string(1) "4"
["nombre"]=>
string(1) "2"
}
[4]=>
array(3) {
["organisme"]=>
string(4) "org3"
["mois"]=>
string(1) "5"
["nombre"]=>
string(1) "2"
}
[5]=>
array(3) {
["organisme"]=>
string(4) "org3"
["mois"]=>
string(1) "8"
["nombre"]=>
string(1) "4"
}
[6]=>
array(3) {
["organisme"]=>
string(4) "org3"
["mois"]=>
string(1) "9"
["nombre"]=>
string(1) "2"
}
[7]=>
array(3) {
["organisme"]=>
string(4) "org3"
["mois"]=>
string(2) "10"
["nombre"]=>
string(1) "2"
}
[8]=>
array(3) {
["organisme"]=>
string(4) "org3"
["mois"]=>
string(2) "11"
["nombre"]=>
string(1) "2"
}
[9]=>
array(3) {
["organisme"]=>
string(4) "org3"
["mois"]=>
string(2) "12"
["nombre"]=>
string(1) "2"
}
}
mais sachez quand je fais une requête je vérifie toujours les résultats avec un die dump ou un dump je récupère bien toute mes données utile de la bdd l'organisation le mois et son nombre d'évènement
queryResult2:
array(10) {
[0]=>
array(3) {
["organisme"]=>
string(4) "org3"
["mois"]=>
string(1) "1"
["nombre"]=>
string(1) "2"
}
[1]=>
array(3) {
["organisme"]=>
string(4) "org3"
["mois"]=>
string(1) "2"
["nombre"]=>
string(1) "3"
}
[2]=>
array(3) {
["organisme"]=>
string(4) "org3"
["mois"]=>
string(1) "3"
["nombre"]=>
string(1) "4"
}
[3]=>
array(3) {
["organisme"]=>
string(4) "org3"
["mois"]=>
string(1) "4"
["nombre"]=>
string(1) "2"
}
[4]=>
array(3) {
["organisme"]=>
string(4) "org3"
["mois"]=>
string(1) "5"
["nombre"]=>
string(1) "2"
}
[5]=>
array(3) {
["organisme"]=>
string(4) "org3"
["mois"]=>
string(1) "8"
["nombre"]=>
string(1) "4"
}
[6]=>
array(3) {
["organisme"]=>
string(4) "org3"
["mois"]=>
string(1) "9"
["nombre"]=>
string(1) "2"
}
[7]=>
array(3) {
["organisme"]=>
string(4) "org3"
["mois"]=>
string(2) "10"
["nombre"]=>
string(1) "2"
}
[8]=>
array(3) {
["organisme"]=>
string(4) "org3"
["mois"]=>
string(2) "11"
["nombre"]=>
string(1) "2"
}
[9]=>
array(3) {
["organisme"]=>
string(4) "org3"
["mois"]=>
string(2) "12"
["nombre"]=>
string(1) "2"
}
}
mais sachez quand je fais une requête je vérifie toujours les résultats avec un die dump ou un dump je récupère bien toute mes données utile de la bdd l'organisation le mois et son nombre d'évènement
<?php $queryResult2=array ( 0 => array ( 'organisme' => 'org3', 'mois' => '1', 'nombre' => '2', ), 1 => array ( 'organisme' => 'org3', 'mois' => '2', 'nombre' => '3', ), 2 => array ( 'organisme' => 'org3', 'mois' => '3', 'nombre' => '4', ), 3 => array ( 'organisme' => 'org3', 'mois' => '4', 'nombre' => '2', ), 4 => array ( 'organisme' => 'org3', 'mois' => '5', 'nombre' => '2', ), 5 => array ( 'organisme' => 'org3', 'mois' => '8', 'nombre' => '4', ), 6 => array ( 'organisme' => 'org3', 'mois' => '9', 'nombre' => '2', ), 7 => array ( 'organisme' => 'org3', 'mois' => '10', 'nombre' => '2', ), 8 => array ( 'organisme' => 'org3', 'mois' => '11', 'nombre' => '2', ), 9 => array ( 'organisme' => 'org3', 'mois' => '12', 'nombre' => '2', ) ); //On commence par réorganiser l'array par mois $organ = $queryResult2[0]['organisme']; $arrOrga = []; foreach($queryResult2 as $R){ $mois = $R['mois']; $nb = $R['nombre']; $arrOrga[$mois] = $nb; } $mois = []; for($i=1;$i<=12;$i++){ $mois[]= $i; $nbrEvent[] = isset($arrOrga[$i]) ? $arrOrga[$i] : 0; } echo "<pre>"; var_dump($nbrEvent); echo "</pre>";