Bonjour,
Je rencontre actuellement un problème de syntaxe sur l'une de mes instructions SQL (je travaille sur MySQL même si peu importe certainement).
Le but de ma requête est de récupérer le nombre d'objets par département dont le type objet est X et la région Y, tout en récupérant également la liste complète des département de la région. Ainsi, je devrais récupérer la liste complète des régions de ce département avec une ligne nb_objets valant le nombre d' objet correspondant à ce que retourne la clause WHERE.
La requête que je traite est :
Cette requête ne me retourne actuellement aucun résultat.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 SELECT departement.id_departement,departement.nom, COUNT(objet.id_objet) as nb_objet FROM objet JOIN objet_commune ON objet.id_objet = objet_commune.id_objet JOIN commune ON commune.id_commune = objet_commune.id_commune RIGHT JOIN departement ON commune.id_departement = departement.id_departement WHERE id_region= :id_region AND objet.id_type_objet = :id_type_objet GROUP BY departement.id_departement
Pourtant si j'effectue la même requête en retirant la clause "AND objet.id_type_objet = :id_type_objet" je récupère bien la liste que j'attend décrite plus haut.
Je comprendrais que le résultat retourner soit une liste de mes départements avec tout les nb_objet valant 0 (dans la mesure où aucun ne correspond à ma clause WHERE), mais je m'attend tout de même à récupérer cette liste, ce qui n'est pas le cas (je ne récupère aucun enregistrement).
Merci d'avance pour vos explications, j'aimerais éviter de passer par deux requête SQl imbriqué, et j'aimerais également comprendre pourquoi ma requête se comporte ainsi.






Répondre avec citation
Partager