Un PRO du SQL pour m’expliquer mon erreur?

OP
AP

AllezPasEnInfo

il y a 8 mois

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

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

OP
AP

AllezPasEnInfo

il y a 8 mois

Je serais éternellement reconnaissant à la personne qui me répondra

OP
AP

AllezPasEnInfo

il y a 8 mois

J'up le topic

KT

KheyTarax

il y a 8 mois

Indice : "Une mauvaise programmation, engendre des erreurs !"

OP
AP

AllezPasEnInfo

il y a 8 mois

Allez les clés un peu d'aide s'il vous plaît

OP
AP

AllezPasEnInfo

il y a 8 mois

les clés veulent pas m'aider

NU

Nuagedecube

il y a 8 mois

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

11

11aa22bb33cc

il y a 8 mois

Le tri ne s'effectue pas sur la même couche

MG

Mr-Gl0usse

il y a 8 mois

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

OP
AP

AllezPasEnInfo

il y a 8 mois


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

OP
AP

AllezPasEnInfo

il y a 8 mois


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!