Count avec jointure

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Count avec jointure

Re: Count avec jointure

par yann18 » 04 mars 2015, 16:28

dans ce cas faudrait compter que les villes se trouvant dans la table tata tout y ignorant d'éventuels doublons

Code : Tout sélectionner

Select a.region, a.Ville, b.alarme, b.date, count(DISTINCT b.Ville) from toto a INNER JOIN tata b ON a.Ville=b.Ville GROUP BY a.region, a.Ville, b.alarme, b.date

Re: Count avec jointure

par aly91 » 04 mars 2015, 15:54

bonjour,
pour ignorer les duplicatas issus de ta requête, tu peux soit passer à la fonction COUNT l'instruction DISTINCT Toto.VILLE soit tu fais un groupement par ville(GROUP BY).
-avec group by

Code : Tout sélectionner

Select a.region, a.Ville, b.alarme, b.date, count(*) from toto a INNER JOIN tata b ON a.Ville=b.Ville GROUP BY a.region, a.Ville, b.alarme, b.date
-avec COUNT:

Code : Tout sélectionner

Select a.region, a.Ville, b.alarme, b.date, count(DISTINCT Toto.VILLE) from toto a INNER JOIN tata b ON a.Ville=b.Ville
l’inconvénient de la dernière requête c'est que tu n'auras qu'une seule ligne retournée.

Après j'avoue que ta modélisation n'est pas top car l'information sur la ville est dupliquée dans tes 2 tables.Une modélisation mieux pensée te donnerait les tables : region, ville, quartiers.
Merci de m'avoir répondu.
Alors moi je souhaiterais la première solution je veux voir les nombres d’occurrences de chaque ligne. Ce pendant, j'ai effectué la première solution j'ai toujours le même résultat ça ne change pas.Si non comme je vous dit j'utilise la table toto tout simplement pour pour rajouter l'information concernant la région.
Bien cordialement.

Re: Count avec jointure

par yann18 » 04 mars 2015, 15:15

bonjour,
pour ignorer les duplicatas issus de ta requête, tu peux soit passer à la fonction COUNT l'instruction DISTINCT Toto.VILLE soit tu fais un groupement par ville(GROUP BY).
-avec group by

Code : Tout sélectionner

Select a.region, a.Ville, b.alarme, b.date, count(*) from toto a INNER JOIN tata b ON a.Ville=b.Ville GROUP BY a.region, a.Ville, b.alarme, b.date
-avec COUNT:

Code : Tout sélectionner

Select a.region, a.Ville, b.alarme, b.date, count(DISTINCT Toto.VILLE) from toto a INNER JOIN tata b ON a.Ville=b.Ville
l’inconvénient de la dernière requête c'est que tu n'auras qu'une seule ligne retournée.

Après j'avoue que ta modélisation n'est pas top car l'information sur la ville est dupliquée dans tes 2 tables.Une modélisation mieux pensée te donnerait les tables : region, ville, quartiers.

Count avec jointure

par aly91 » 04 mars 2015, 12:31

Bonjour,
J'ai un problème sur une requête.
J'ai deux tables toto et tata. Dans la table toto, j'ai les champs region, Ville, quartier. Et dans la table tata, j'ai les champs Ville, alarme, date.
Maintenant, mes tables sont remplies comme suit :
pour Toto
Clermont | UneVilleDansClermont | x
Clermont | UneautreVilleDansClermont | y
Clermont | EncoreUneVilleDansClermont | z
ANNECY | UneVilleDansAnnecy | t

pour Tata

UneVilleDansClermont| Majeur | 03/02/2015

Maintenant quand je fais la requête suivante
Select a.region, a.Ville, b.alarme, b.date, count(*) from toto a INNER JOIN tata b ON a.Ville=b.Ville
Il me renvoie
Clermont | UneVilleDansCLERMONT | Majeur | 03/02/2015 | 3
Le problème en est que le count est égale à 3 alors que moi je veux qu'il soit à 1 car je veux compter qu'une seule occurence et il y'en a qu'une.Je fais la jointure pour rajouter tout juste le champos région.
En espérant que vous avez compris mon problème.
Merci d'avance.
Bien cordialement.