La condition que tu as enlevée de la 2° requête, soit :
correspond à la jointure ou relation entre les 2 tables utilisées dans la clause FROM de la requête. Ce qui veut dire que si tu ne la mets pas le résultat de la requête contiendra à la fois tous les enregistrements d'une table et ceux de l'autre table qui correspondent à la condition :
Exemple:
La table "pays" contient :
id--- nom
-----------
1 --- France
2 --- USA
La table "ville" contient :
id_pays------ nom
1-------------- Laval
1-------------- Le mans
1-------------- Paris
2-------------- New York
2-------------- Washington
La relation entre la table "pays" et la table "ville" est que le champ "pays.id" soit égal au champ "ville.id_pays"
Soit la requête suivante, qui extrait la liste des villes de la France:
Code : Tout sélectionner
SELECT pays.nom, ville.nom
FROM pays, ville
WHERE pays.id = ville.id_pays
AND pays.nom = "France"
Avec les 2 conditions du Where, la première (pays.id = ville.id_pays) permet de lier l'enregistrement correspondant à un pays avec les enregistrements dans "ville" correspondant à ce pays. On dit que cette condition est une jointure entre tables.
La seconde condition (pays.nom = "France") s'applique simplement à la table "pays" et permet de limiter la sélection au pays "France".
Du coup, en sortie, on aura sélectionné simplement les villes correspondant au pays "France"
Si l'on enlève la condition relative à la relation entre les 2 tables soit : pays.id = ville.id_pays,
la requête ne renvoi pas les bons résultats puisque le moteur de requêtes ne saura plus faire le lien entre l'enregistrement traité dans la table "pays" et un autre qui se trouve dans la table "ville"
Il sélectionnera donc tous les enregistrements correspondant à la France dans la table "pays" mais traitera tous les enregistrements de la table "ville" y compris les villes qui ne correspondent pas à la France.
La 1° requête normale retournera 3 enregistrements correspondant aux 3 villes de France existantes dans la table "ville"
La 2° requête erronée retournera tous les enregistrements de la table "ville" multipliés par le nombre d'enregistrements correspondant à la condition sur la table "pays".
Soit: 1 pays sélectionné x 5 villes existantes dans la table "ville" = 5 enregistrements en sortie.
Dans ton cas, le chiffre "650.000" correspond à la multiplication du nombre d'enregistrements sélectionné par la condition "s_noe_tophfc = '145434' " par le nombre total d'enregistrements dans l'autre table.