Bonjour,
Je fais face à un résultat de requête de ma BDD avec PDO que je comprends pas. J'obtient ce que je recherche en effectuant la requête sur mon SGBD mais pas avec PHP... Aprés m'être pas mal tiré les cheveux, je m'en remets à vous pour m'aiguiller.
J'ai une BDD avec 3 tables :
ASSEMBLAGES (id_assemblage, num_assemblage, fraction, id_dissolution, id_experience)
DISSOLUTIONS (id_dissolution, id_experience)
EXPERIENCES (id_experience, nom_experience)
Pour ce qui est des contraintes, les assemblages ayant le même nom doivent tous être liés à la même experience mais ils peuvent être présent dans différentes dissolutions, la somme de leur fraction ne doit pas dépasser 1.
Je souhaite effectuer une requête pour récupérer la somme des fractions, les dissolutions et le nom de l'experience de tous les assemblages ayant le même nom.
Je fais donc sur mon SGBD(MYSQL) :
j'obtiens le tableau suivant
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SELECT (SELECT SUM(fraction) FROM ASSEMBLAGES WHERE num_assemblage='A') AS sum_fraction, id_dissolution, nom_experience FROM ASSEMBLAGES A, EXPERIENCES R WHERE A.id_experience = R.id_experience AND num_assemblage = 'A' GROUP BY id_dissolution
sum_fraction -- id_dissolution -- nom_experience
1.00 -- 4 -- TEST
1.00 -- 5 -- TEST
1.00 -- 7 -- TEST
(C'est ce que je recherche on voit que A est bien présente sur la même experience(TEST) dans différentes disso (4,5 et 7) et la somme des fractions =1)
Lorsque j'effectue cette même requête sous PHP avec PDO
Dans les mêmes conditions (qui m'ont permis d'obtenir le "tableau" précédent), je n'ai qu'un "id_dissolution" alors que je devrais en avoir 3 ( je n'ai que $data['id_dissolution'] = 4 et non pas $data['id_dissolution'] = {4,5,7}).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 $query = 'SELECT (SELECT SUM(fraction) FROM ASSEMBLAGES WHERE num_assemblage=:numAssemblage) AS sum_fraction, id_dissolution, nom_experience FROM ASSEMBLAGES A, EXPERIENCES R WHERE A.id_experience = R.id_experience AND num_assemblage = :numAssemblage GROUP BY id_dissolution'; $requete = $pdo->prepare($query); $requete -> bindValue(':numAssemblage', $numAssemblage, PDO::PARAM_STR); $requete -> execute(); $data = $requete->fetch();
Quelqu'un sarait-il m'éclairer sur les raisons de ce résultat?
Merci.
Partager