problème requête
Posté : 13 nov. 2023, 00:26
bonjour,
j'ai un problème dans ma requête : j'ai le même nombre d'élève dans les école et ceux qui pratique au moins un sport alors que dans les tables qui son renseignées ce n'est pas le cas.
les valeurs données dans les deux cas sont les valeurs des élèvés pratiquants au moins 1 sport.
voici les tables :
table ecole : ecole_id | ecole_nom cle primaire ecole_id
table eleve : eleve_id | ecole_id cle primaire eleve_id et clé etrangere ecole_id
table sport : sport_id | Nomsport cle primaire sport_id
table sporteleve : sporteleve_id | eleve_id | sport_id cle primaire sporteleve_id et cles etrangeres eleve_id et sport_id
voici ma requête :
j'ai un problème dans ma requête : j'ai le même nombre d'élève dans les école et ceux qui pratique au moins un sport alors que dans les tables qui son renseignées ce n'est pas le cas.
les valeurs données dans les deux cas sont les valeurs des élèvés pratiquants au moins 1 sport.
voici les tables :
table ecole : ecole_id | ecole_nom cle primaire ecole_id
table eleve : eleve_id | ecole_id cle primaire eleve_id et clé etrangere ecole_id
table sport : sport_id | Nomsport cle primaire sport_id
table sporteleve : sporteleve_id | eleve_id | sport_id cle primaire sporteleve_id et cles etrangeres eleve_id et sport_id
voici ma requête :
<?php
//GROUP BY //instanciation de connexion au serveur
$db = new PDO('mysql:host=localhost;dbname=statecol', 'root', '');
$sql = 'SELECT
ecole.ecole_nom,
COUNT(DISTINCT eleve.eleve_id) AS nb_eleves,
COUNT(DISTINCT sporteleve.eleve_id) AS nb_pratiquants
FROM ecole
INNER JOIN eleve ON ecole.ecole_id = eleve.ecole_id
INNER JOIN sporteleve ON sporteleve.eleve_id = eleve.eleve_id
GROUP BY ecole.ecole_nom';
// Exécution de la requête
$stmt = $db->prepare($sql);
$stmt->execute();
// Récupération des résultats
$results = $stmt->fetchAll();
?>
<table>
<thead>
<tr>
<th>École</th>
<th>Nombre d'élèves</th>
<th>Nombre d'élèves pratiquant un sport</th>
</tr>
</thead>
<tbody>
<?php
foreach ($results as $row) {
echo '<tr>';
echo '<td>' . $row['ecole_nom'] . '</td>';
echo '<td>' . $row['nb_eleves'] . '</td>';
echo '<td>' . $row['nb_pratiquants'] . '</td>';
echo '</tr>';
}
?>
</tbody>
</table>