|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre à l'essai
![]() Inscription : janvier 2006 Messages : 120 ![]() |
Bonjour à tous,
Voila je suis face à un problème que je n'arrive pas à m'expliquer dans le retour de résultat, je me demande si il n'y aurait pas une erreur dans ma requête SQL. Lorsque je comptabilise le nombre de ligne de ma table import avec la jointure sur la table genre, je me retrouve avec un total qui est supérieur au nombre de lignes contenues dans import Je m'explique, j'ai une table import qui contient de façon distinct 30803 lignes. A partir de cette table je fais une jointure avec une autre table pour compter de façon distincte le nombre de ligne en les regroupant par genre. Structure de ma table import : spectre varchar(50) | topo varchar(10) | annee int(11) Structure de ma table genrespe : topo varchar(10) | genre varchar(30) Pour comptabiliser je fais : Code :
|
||
|
|
00
|
|
|
#2 | ||
![]() ![]() |
1) Les jointures s'écrivent depuis 1992 avec l'opérateur JOIN ; il serait temps de s'y mettre !
2) Tu ne devrais pas utiliser de colonne signifiante, en plus de type VARCHAR, pour clé primaire et étrangère ! Voir l'article de SQLPro à ce sujet. 3) Que donne la requête suivante : Code :
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
||
|
00
|
|
|
#3 | ||||
|
Membre à l'essai
![]() Inscription : janvier 2006 Messages : 120 ![]() |
Bonjour CinePhil,
Merci pour ta réponse. J'ai effectivement mis la requête sans utiliser les inner join, le résultat est le même, ça comptabilise en trop. 1) Code :
3) Code :
As tu une idée ? |
||||
|
|
00
|
|
|
#4 |
![]() ![]() |
Et bien ça veut dire que 1 genre peut être associé à plusieurs spectres et que donc il y a des spectres qui sont comptabilisés dans plusieurs lignes résultat de ta requête. Ça ne me semble pas anormal.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
|
|
#5 |
|
Membre à l'essai
![]() Inscription : janvier 2006 Messages : 120 ![]() |
ok merci cinephil. Je pensais que justement la clause distinct permettait de filtrer ces cas de figures. Mais bon, ça me convient comme raisonnement
|
|
|
00
|
|
|
#6 |
![]() ![]() |
Comme tu fais un groupement par genre, le DISTINCT va s'appliquer à l'intérieur de chaque valeur de genre.
Le spectre 'Bleu' pourra être compté une fois dans le genre 'Masculin' et une fois dans le genre 'Féminin'. Voilà pourquoi au final, si tu additionnes tous les 'Total', tu pourras avoir l'illusion d'avoir plus de spectres différents qu'il n'y en a dans la table import. Si tu nous dis plus précisément ce que tu veux compter, on peut t'aider à construire la requête.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
Copyright © 2000-2012 - www.developpez.com