Requête Select avec la clause group by et plusieurs jointures internes dans Postresql
J'ai 3 tabels avec les définitions suivantes
people
------
- wid
- name
types
-----
- guid
- type
mapping
-------
- guid
- wid
Les gens de la table a la liste des personnes
Le tableau des types le type d'informations pour chaque ligne présente dans le peuple de la table. Si une personne appartient à plus d'un type, puis deux lignes sont présentes dans le tableau des types.
De la table de correspondance fournit un mappage entre les personnes et les types de table.
Maintenant à savoir qui sont les personnes de type "homme politique" je peux utiliser la requête suivante.
select name from people inner join
(mapping inner join types on mapping.guid = types.guid)
on people.wpid = mapping.wpid where types.type = 'politician'
Mais maintenant je veux savoir quels sont les autres types d'un politicien appartient. Je sais que je dois utiliser group by
et having
clause. Mais je ne suis pas en mesure de venir avec la requête. Comment écrire cette requête?
Vous devez vous connecter pour publier un commentaire.
Essayer:
- pour une liste de tous les politiciens et tous les types de laquelle ils appartiennent.
Alternativement, si vous voulez juste une liste de tous les politiciens et les nombre de différents types qui ils appartiennent, essayez:
Un group by doit être utilisé pour donner le résultat d'une fonction d'agrégation sur un groupe de valeur (tels que le nombre de types différents, ou une somme de valeurs). Si vous avez juste besoin d'obtenir ce groupe de types un peuple appartient aussi, vous pouvez utiliser une requête unique de ce genre.
Un groupe par serait utile de savoir combien de groupes d'un homme politique est en
EDIT: à éviter DANS la sous-requête
Si vous connaissez le guid de la politicien groupe, vous pourriez faire quelque chose comme cela. Je n'ai pas tester la requête, mais l'idée est de filtrer le personnes table à l'aide d'une jointure avec la cartographie table avec guid est égale à l'homme politique guid