Je comprends comment compter (*) en SQL lors de l'adressage d'une table, mais comment fonctionne-t-il sur les jointures intérieures?
par exemple p>
SELECT branch, staffNo, Count(*) FROM Staff s, Properties p WHERE s.staffNo = p.staffNo GROUP BY s.staffNo, p.staffNo
5 Réponses :
Il compte le nombre de lignes pour chaque distinct En outre, vous devez regrouper par la branche staffno code> dans le produit cartésien. p>
, StaffNo Code>. P>
C'est une fonction globale - en tant que telle qu'elle est gérée par votre groupe par clause - chaque ligne correspondra à un groupe unique (c.-à-d. Staffno) et compter (*) retournera le nombre d'enregistrements dans la jointure qui correspond à ce groupe. Donc, par exemple: P>
SELECT grade, Count(*) FROM Staff s, Properties p WHERE s.staffNo = p.staffNo GROUP BY grade
bien me coupez-moi - je frappe Soumettre sans finir ma réponse
Ta :) Je suis arrivé à la fin!
Alors, comptez-t-il essentiellement de nombreux p.staffs = S.Staffs?
NON - Exécutez la requête suivante: Sélectionnez une branche, S.Staffno du personnel S, Propriétés p Où S.Staffno = P.Staffno. Cela montre les Resultats non concroissants. Vous pouvez avoir plusieurs rangées avec la même personnalisation. Ce sera parce que dans l'une des tables, il y a plusieurs rangées avec cette staffno. L'ajout du comte () et la clause de groupe ci-dessus réduira les Resultats des rangées regroupées par StaffNo. Lorsque plusieurs entrées existaient auparavant, cela sera maintenant reflété dans le résultat du comte ( i>).
Dans votre requête, il imprimera le nombre de lignes de StaffNo. (Il est redondant d'avoir S.Staffno, p.staffno; soit suffisant). P> compte (*) code> compte simplement le nombre de lignes dans la requête ou le groupe par code>. p>
Vous avez un nom de colonne ambigu Vous sélectionnez Je pense que ce que vous voulez savoir, c'est que cela retournera un compte pour chaque "jeu" de vos champs regroupés, afin que chaque combinaison de StaffNo code>. p>
Branche CODE> mais ne groupez pas par IT - Préparez-vous pour une erreur de syntaxe (tout sauf mySQL) ou des branches aléatoires à sélectionner pour vous (mySQL). p>
s.staffno, p.staffno code > Combien de lignes appartiennent à cet ensemble. P>
La fonction d'agrégat (que ce soit Le modèle conceptuel pour l'exécution d'un Ce modèle conceptuel omettes traitant de tout Ce n'est pas ce que ce n'est pas vraiment comment quelque chose qu'un moteur SQL très naïfe exécuterait une requête, mais les résultats doivent être identiques à ce que vous [éventuellement] obtenez si vous l'avez fait de cette façon. P> compte () code>, somme () code>, avg () code>, etc.) est calculé sur les lignes Dans chaque groupe: ce groupe est ensuite effondré / résumé / agrégé à une seule ligne selon la liste de sélection définie dans la requête. P>
SELECT code> La requête est: p>
Joindre complet code> était effectué. LI>
où code> clause. Li>
par code> Clause. Li>
Clause CODE> LI>
par code> clause li>
ol>
Compute code> ou Compute ... par code> clauses. p>
Détail: Ce n'est pas une jointure extérieure. C'est une jointure (implicite) interne b>.