2009-07-21 15 views

risposta

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

Sì, esattamente. Nota: in Oracle, devi aggiungere "da doppio" a quella sintassi. –

+0

+1 Molto bello, lo farei in questo modo. – Zack

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

Un altro (non so se supportato con MySQL, anche se - lavora a 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 
+0

Curioso: quali sono i pro/contro di ognuno dei tuoi e degli SQL delle risposte accettate? Uno è migliore in termini di prestazioni? Qualcos'altro? – Liao

+0

Per Liao: eseguire l'analizzatore di query e vedere cosa dice. Possono anche essere sinonimi. –

+0

Molto bello. +1 per l'eleganza delle istruzioni SQL. – Zack

2
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 
    ) 
+3

dovrebbe essere unione tutti – dotjoe

+0

@dotjoe: buona cattura! – n8wrl

+0

@ n8wrl: battere di pochi minuti. Oltre al catch di dotjoe e solo FYI, l'alias di colonna è richiesto solo nella prima sottoselezione, poiché viene ignorata negli altri tre durante l'operazione di unione. –

Problemi correlati