2009-07-21 12 views

Odpowiedz

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

Tak, dokładnie. Uwaga: w Oracle musisz dodać "od dual" do tej składni. –

+0

+1 Bardzo ładnie, zrobiłbym to w ten sposób. – Zack

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

Jeszcze jedna (nie wiem, czy obsługiwane przez MySQL, chociaż - działa w 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

Ciekawy - jakie są plusy i minusy każdego z was i akceptowane odpowiedzi "SQLs? Czy jest lepszy pod względem wydajności? Coś innego? – Liao

+0

Do Liao: Uruchom analizator zapytań i zobacz, co mówi. Mogą być synonimami. –

+0

Bardzo ładne. +1 dla elegancji instrukcji 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

powinno być zjednoczenie wszystkie – dotjoe

+0

@dotjoe: Dobry połów! – n8wrl

+0

@ n8wrl: Pokonaj cię przez kilka minut. Oprócz catchu dotjoe i tylko FYI, alias kolumny jest wymagany tylko w pierwszej podselekcji, ponieważ jest ignorowany w pozostałych trzech podczas operacji łączenia. –