Problème SQL date null comment remplacer par 0 ?!
Résolu/Fermé
rdbn
Messages postés
95
Date d'inscription
samedi 3 avril 2021
Statut
Membre
Dernière intervention
26 décembre 2022
-
Modifié le 16 déc. 2021 à 15:28
rdbn Messages postés 95 Date d'inscription samedi 3 avril 2021 Statut Membre Dernière intervention 26 décembre 2022 - 18 déc. 2021 à 10:30
rdbn Messages postés 95 Date d'inscription samedi 3 avril 2021 Statut Membre Dernière intervention 26 décembre 2022 - 18 déc. 2021 à 10:30
A voir également:
- Requête sql date supérieure à
- Publipostage date inversée ✓ - Forum Word
- Formule excel si date supérieur à une autre date ✓ - Forum Excel
- Mfg date - Forum PC portable
- Requête sql pix - Forum Python
4 réponses
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
Modifié le 16 déc. 2021 à 18:12
Modifié le 16 déc. 2021 à 18:12
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 ; }
rdbn
Messages postés
95
Date d'inscription
samedi 3 avril 2021
Statut
Membre
Dernière intervention
26 décembre 2022
Modifié le 17 déc. 2021 à 09:12
Modifié le 17 déc. 2021 à 09:12
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;';
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
Modifié le 17 déc. 2021 à 09:24
Modifié le 17 déc. 2021 à 09:24
tu as regardé le code que je t'ai donné ??
Tu l'as testé ???
Tu l'as testé ???
rdbn
Messages postés
95
Date d'inscription
samedi 3 avril 2021
Statut
Membre
Dernière intervention
26 décembre 2022
>
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
Modifié le 17 déc. 2021 à 09:39
Modifié le 17 déc. 2021 à 09:39
Evidement oui je l'ai testé est j'ai toujours le même résultat ["2","3","4","2","2","4","2","2","2","2"]. Donc j'ai continuer à m'en aspiré en essayant quelque modification mais sans plus.
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
>
rdbn
Messages postés
95
Date d'inscription
samedi 3 avril 2021
Statut
Membre
Dernière intervention
26 décembre 2022
17 déc. 2021 à 11:24
17 déc. 2021 à 11:24
heu.. ce n'est pas possible ... tu n'as pas repris le code que je t'ai donné...
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
>
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
17 déc. 2021 à 11:24
17 déc. 2021 à 11:24
montre nous le code modifié ...
rdbn
Messages postés
95
Date d'inscription
samedi 3 avril 2021
Statut
Membre
Dernière intervention
26 décembre 2022
17 déc. 2021 à 11:49
17 déc. 2021 à 11:49
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; }
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
Modifié le 17 déc. 2021 à 12:03
Modifié le 17 déc. 2021 à 12:03
ah oui, petit oubli de ma part ...
pourrais tu me faire un var_dump de ta requête que je puisse voir ce qu'elle retourne exactement ?
pourrais tu me faire un var_dump de ta requête que je puisse voir ce qu'elle retourne exactement ?
//pour vérifier : echo "<pre>queryResult2:<br>"; var_dump($queryResult2); echo "</pres>";
rdbn
Messages postés
95
Date d'inscription
samedi 3 avril 2021
Statut
Membre
Dernière intervention
26 décembre 2022
Modifié le 18 déc. 2021 à 08:23
Modifié le 18 déc. 2021 à 08:23
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
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
18 déc. 2021 à 09:40
18 déc. 2021 à 09:40
<?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>";
rdbn
Messages postés
95
Date d'inscription
samedi 3 avril 2021
Statut
Membre
Dernière intervention
26 décembre 2022
>
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
Modifié le 18 déc. 2021 à 10:31
Modifié le 18 déc. 2021 à 10:31
Merci ! Vous m'avez aidé à résoudre ce problème. Organiser les Evènements par mois dans un tableau . Puis dans une boucle for incrémenté jusque 12, d'ajouter les mois manquants pour valeur 0.