Bonjour,
estofilo
En revanche dans ta requête, les conditions du genre C.positionArr = NULL ne peuvent jamais être vraies, c'est justement l'erreur à ne pas faire avec les NULL.
Effectivement, il s'agit d'une erreur impardonnable, ma requête devrait être
1 2 3 4 5
| SELECT P.idPilote, P.nom, P.prenom, SUM(CASE WHEN C.positionArr IS NULL THEN 1 ELSE 0 END) AS Nbre
FROM PILOTE P
INNER JOIN CLASSEMENT C ON C.idPilote = P.idPilote
GROUB BY P.idPilote, P.nom, P.prenom
HAVING SUM(CASE WHEN C.positionArr IS NULL THEN 1 ELSE 0 END) > 3 |
Non, il est tout à fait possible d'utiliser count(*), que des champs soient à NULL ou pas.
C'est exact, count(*) compte le nombre de lignes. Il serait donc plus judicieux d'écrire
1 2 3 4 5 6
| SELECT P.idPilote, P.nom, P.prenom, COUNT(*) AS Nbre
FROM PILOTE P
INNER JOIN CLASSEMENT C ON C.idPilote = P.idPilote
WHERE C.positionArr IS NULL
GROUB BY P.idPilote, P.nom, P.prenom
HAVING COUNT(*) > 3 |
Autant pour moi.
A+
Partager