T-SQL SELECT avec GROUP BY id
J'ai de la table avec " Personnes'
Colonnes
- ID
- Nom
- Âge
Et table avec " Notes':
Colonnes
- ID
- Texte
- FK_Author
Je veux pour sélectionner le nombre de notes pour tous les auteurs de personnes à table et leur nom et leur âge, mais je veux qu'il les groupe par PERSONNE ID, pas de nom. Il existe de nombreuses situations où les gens ont le même nom, mais l'ID est évidemment toujours différents.
EXEMPLE (entrée)
PERSONNES:
╔════╦═══════╦═════╗
║ ID ║ NAME ║ AGE ║
╠════╬═══════╬═════╣
║ 1 ║ John ║ 12 ║
║ 2 ║ Annie ║ 29 ║
║ 3 ║ John ║ 44 ║
╚════╩═══════╩═════╝
NOTES:
╔════╦═══════╦═══════════╗
║ ID ║ TEXT ║ FK_AUTHOR ║
╠════╬═══════╬═══════════╣
║ 1 ║ 'aaa' ║ 1 ║
║ 2 ║ 'aaa' ║ 1 ║
║ 3 ║ 'aaa' ║ 2 ║
║ 4 ║ 'aaa' ║ 2 ║
║ 5 ║ 'aaa' ║ 3 ║
╚════╩═══════╩═══════════╝
Résultat attendu:
╔═══════╦═════╦════════════╗
║ NAME ║ AGE ║ TOTALCOUNT ║
╠═══════╬═════╬════════════╣
║ John ║ 12 ║ 2 ║
║ Annie ║ 29 ║ 2 ║
║ John ║ 44 ║ 1 ║
╚═══════╩═════╩════════════╝
Lorsque je sélectionne les données que j'ai de groupe par Nom trop si je veux choisir cette colonne, car si je n'ai pas, j'obtiens l'erreur.
Vous devez vous connecter pour publier un commentaire.
Puisque vous voulez obtenir tous les enregistrements de la table
People
, vous devez joindre àNotes
en utilisantLEFT JOIN
donc n'importe quel utilisateur sans enregistrement surNotes
sera inclus dans la liste avec thev valeur detotalCount
à zéro.Pour plus d'acquérir plus de connaissances sur les jointures, veuillez visiter le lien ci-dessous:
SORTIE
ID
sur leGROUP BY
clause:D
ID
, supprimer le nom de la colonne à partir de laSELECT
clause, et non pas sur laGROUP BY
clause.vous pouvez utiliser une sous-requête aussi pour effectuer cette tâche-
Vous pourrait également obtenir le nombre de Billets table, puis à gauche et rejoindre les Gens tableau comme ci-dessous.
Violon-demo (merci à J W pour le violon)