10
votes

Ajouter des résultats de plusieurs questions de comptage

J'essaie d'aller chercher la somme de plusieurs comptes dans une requête: xxx

Je manque quelque chose ici. Je reçois une erreur de syntaxe.


0 commentaires

4 Réponses :


19
votes
SELECT ( SELECT COUNT(*) FROM comments ) 
     + ( SELECT COUNT(*) FROM tags ) 
     + ( SELECT COUNT(*) FROM search )

1 commentaires

Oui, exactement. Remarque: à Oracle, vous devez ajouter «de Dual» à cette syntaxe.



2
votes
SELECT (
       SELECT  COUNT(*)
       FROM    comments
       ) +
       (
       SELECT  COUNT(*)
       FROM    tags
       ) +
       (
       SELECT  COUNT(*)
       FROM    search
       )

0 commentaires

6
votes

Un de plus (non sûr si supporté avec MySQL, cependant - fonctionne dans SQL Server):

SELECT SUM(Counts) FROM
  (SELECT COUNT(*) AS Counts FROM COMMENTS UNION ALL
   SELECT COUNT(*) FROM Tags UNION ALL
   SELECT COUNT(*) FROM Search) s


5 commentaires

Curieux - Quels sont les avantages / inconvénients de chacun des vôtres et des SQLS de réponse acceptés? Est-il meilleur en termes de performance? Autre chose?


À Liao: Exécutez l'analyseur de la requête et voyez ce que cela dit. Ils peuvent être synonymes.


Très agréable. +1 pour l'élégance de la déclaration SQL.


Ils devraient être les mêmes; J'aime les miens parce que c'est beaucoup moins de frappe. :RÉ


@Matt: ah, oui! Un homme après mon propre coeur - paresseux! Le mien vient de devoir l'expliquer aux personnes non-techniques tout le temps; Les frappes supplémentaires diminuent le verbiage de l'explication. :-)



2
votes
SELECT SUM(ThisCount)
  FROM (
    SELECT COUNT(*) AS ThisCount
      FROM comments

    UNION ALL

    SELECT COUNT(*) AS ThisCount
      FROM tags

    UNION ALL

    SELECT COUNT(*) AS ThisCount
      FROM search
    )

2 commentaires

@ N8WRL: Battez-vous de quelques minutes. Outre la prise de Dotjoe, et juste FYI, l'alias de colonne n'est requis que dans le premier sous-sélection, car il est ignoré dans les trois autres pendant l'opération syndicale.


@Ken: Merci pour ça. Ce que j'étais vraiment après la syntaxe qui m'a permis de se référer à la première colonne de la somme () quel que soit son nom. Pas de joie.