Michael: MySQL: COUNT bei UNION zusammenzählen

Hallo,

meine Abfrage:
select COUNT(id) AS Anzahl
from tbl_1
UNION
select COUNT(id) AS Anzahl
from tbl_2

und danch bekomme ich folgendes resultset:

__________
Anzahl    |
----------
343       |
----------
455       |
----------

Wie aber schaffe ich es damit ich nur ein addiertes Ergebnis zurückbekomme?

lg
Michael

  1. yo,

    falls dein DBMS Unterabfragen beherscht...

    SELECT COUNT(*) +
           MAX((SELECT COUNT(*) FROM tbl_2))
          AS Anzahl
    FROM tbl_1

    Ilja

    1. Hallo Ilja,

      falls dein DBMS Unterabfragen beherscht...

      SELECT COUNT(*) +
             MAX((SELECT COUNT(*) FROM tbl_2))
            AS Anzahl
      FROM tbl_1

      Ilja

      nach langem probieren hab ich es jetzt doch noch geschafft:

      SELECT SUM(x.Anzahl) FROM (
      select COUNT(id) AS Anzahl
      from tbl_1
      UNION
      select COUNT(id) AS Anzahl
      from tbl_2

      ) AS x

      und dies müsste eigentlich performanter sein als mit deiner Unterfrage, aber trotzdem vielen Dank.

      lg
      Michael

      1. yo,

        SELECT SUM(x.Anzahl) FROM (
        select COUNT(id) AS Anzahl
        from tbl_1
        UNION
        select COUNT(id) AS Anzahl
        from tbl_2

        ) AS x

        und dies müsste eigentlich performanter sein als mit deiner Unterfrage, aber trotzdem vielen Dank.

        zum einen würde ich die id aus dem COUNT entfernen, das es sich sicherlich um einen schlüsselwert handelt, der sowieso nie NULL sein wird. damit ersparst du dem DBMS arbeit. zum anderen ist deine lösung auch ein sehr guter weg, sollte aber von der perfroamnce nicht wirklich schneller sein. aber wie immer gilt beim tuning, probieren über studieren. Ausserdem würde ich mir immer das AS sparen, aber das ist geschmackssache.

        Ilja

        1. Hello,

          Ausserdem würde ich mir immer das AS sparen, aber das ist geschmackssache.

          wenn du wüsstest...ich habe schon das ein oder andere System gehabt, das dann die Syntax ankreidet...UNION im Subselect sind meiner Erfahrung nach immer etwas Spielerei bis man die Konstellation am Laufen hat.

          MfG
          Rouven

          --
          -------------------
          sh:| fo:} ch:? rl:( br:& n4:{ ie:| mo:} va:) js:| de:] zu:| fl:( ss:) ls:& (SelfCode)
          Vegetarier essen meinem Essen das Essen weg.
      2. nach langem probieren hab ich es jetzt doch noch geschafft:

        SELECT SUM(x.Anzahl) FROM (
        select COUNT(id) AS Anzahl
        from tbl_1
        UNION
        select COUNT(id) AS Anzahl
        from tbl_2

        ) AS x

        Ich würde aber statt UNION, UNION ALL nutzen, sonst wirst du dich eines Tages wundern wenn beide Tabellen die selbe Anzahl Datensätze besitzen.