Topic de AllezPasEnInfo :

Un PRO du SQL pour m’expliquer mon erreur?

  • 1

En fait j’ai déjà la solution, juste j’aimerais comprendre pourquoi ces deux codes ne me donnent pas le même résultat :hap:

https://image.noelshack.com/fichiers/2024/35/2/1724788033-6f195c78-1540-4c65-8203-616cb908d89e.png

https://image.noelshack.com/fichiers/2024/35/2/1724788032-c88c55f0-8295-46f7-8752-11c4476980f6.png

Je serais éternellement reconnaissant à la personne qui me répondra :hap:
Indice : "Une mauvaise programmation, engendre des erreurs !" :rire:
Allez les clés un peu d’aide s’il vous plaît :(
:snif: les clés veulent pas m’aider :(
La première renverra toutes les lignes sans spécifier un nombre défini contrairement à la deuxième qui renverra le nombre de vote supérieur ou égal à 100000
Le tri ne s'effectue pas sur la même couche

Ton premier code renvoie le nombre exact de films qui ont au moins 100 000 votes, où la condition WHERE num_votes >= 100000 filtre les lignes avant de compter, donc le résultat sera le nombre de films qui ont au moins 100 000 votes et ta seconde renvoie le nombre total de films parce qu'elle compte les évaluations de la condition plutôt que de filtrer les lignes :(

C'est parce que ton COUNT(num_votes >= 100000) va compter toutes les lignes, parce que l'expression num_votes >= 100000 retourne une valeur booléenne pour chaque ligne :(
Vu que TRUE est traité comme 1 et FALSE comme 0, cette requête compte en fait le nombre de lignes dans la table reviews, car toutes les lignes (y compris celles où num_votes est inférieur à 100 000) seront comptées, mais sous forme de 0 ou 1 :(

Le 27 août 2024 à 22:02:15 :
La première renverra toutes les lignes sans spécifier un nombre défini contrairement à la deuxième qui renverra le nombre de vote supérieur ou égal à 100000

Pourtant, j’ai un nombre plus petit avec la première :(

Le 27 août 2024 à 22:07:59 :
Ton premier code renvoie le nombre exact de films qui ont au moins 100 000 votes, où la condition WHERE num_votes >= 100000 filtre les lignes avant de compter, donc le résultat sera le nombre de films qui ont au moins 100 000 votes et ta seconde renvoie le nombre total de films parce qu'elle compte les évaluations de la condition plutôt que de filtrer les lignes :(

C'est parce que ton COUNT(num_votes >= 100000) va compter toutes les lignes, parce que l'expression num_votes >= 100000 retourne une valeur booléenne pour chaque ligne :(
Vu que TRUE est traité comme 1 et FALSE comme 0, cette requête compte en fait le nombre de lignes dans la table reviews, car toutes les lignes (y compris celles où num_votes est inférieur à 100 000) seront comptées, mais sous forme de 0 ou 1 :(

Merci clé tu gères!

Le 27 août 2024 à 22:08:24 AllezPasEnInfo a écrit :

Le 27 août 2024 à 22:02:15 :La première renverra toutes les lignes sans spécifier un nombre défini contrairement à la deuxième qui renverra le nombre de vote supérieur ou égal à 100000

Pourtant, j’ai un nombre plus petit avec la première :(

C'est une erreur j'ai écris trop vite mais je pense qu'il faut éviter de COUNT(*) pour ne pas surcharger la requête surtout si la base de données est pleine, soyez précis.

  • 1

Données du topic

Auteur
AllezPasEnInfo
Date de création
27 août 2024 à 21:48:42
Nb. messages archivés
12
Nb. messages JVC
12
En ligne sur JvArchive 99