MySQL: COUNT bei UNION zusammenzählen
Michael
- datenbank
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
yo,
falls dein DBMS Unterabfragen beherscht...
SELECT COUNT(*) +
MAX((SELECT COUNT(*) FROM tbl_2))
AS Anzahl
FROM tbl_1
Ilja
Hallo Ilja,
falls dein DBMS Unterabfragen beherscht...
SELECT COUNT(*) +
MAX((SELECT COUNT(*) FROM tbl_2))
AS Anzahl
FROM tbl_1Ilja
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
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
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
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.