Hallo Paul,
um die Kritik zu konkretisieren:
Beispiel:
t_aussendienst, t_chef, t_innnendienst
Nun möchte ich gerne alle Gehälter jeder Tabelle zählen (count)
und anschließend diese summieren.
Offensichtlich existieren Daten in drei Tabellen statt in einer. Sieht derzeit nach fehlerhaftem Datenbankdesign aus.
Nehmen wir jetzt an, Du hättest
4 Einträge in der Chefetage,
250 Einträge im Innendienst und
1000 Einträge im Außendienst.
SELECT
sum(
count(t_aussendienst.gehalt) +
count(t_chef.gehalt) +
count(t_innendienst.gehalt)
)
FROM t_aussendienst, t_chef, t_innnendienst
WHERE Gehalt > 450;
Dann hätte
SELECT
a.gehalt,
c.gehalt,
i.gehalt
FROM t_aussendienst a, t_chef c, t_innendienst
eine Million Einträge (wegen des CROSS JOINS):
Jeder Eintrag aus dem Bereich Chef wird mit jedem Eintrag aus dem Bereich Außendienst und jede dieser Kombinationen wieder mit jedem Eintrag aus dem Bereich Innendienst kombiniert.
Auf welche Spalte gehalt soll nun Deine WHERE-Klausel wirken?
Statt dessen solltest Du im ersten Schritt Dein fehlerhaftes Datenbankdesign mit einer UNION korrigieren:
SELECT
gehalt
FROM t_aussendienst
WHERE gehalt > 450
UNION ALL -- damit Du auch doppelte Werte bekommst
-- wenn zwei das gleiche verdienen.
SELECT
gehalt
FROM t_chef
WHERE gehalt > 450 -- Die WHERE-Klausel ist in jedem Einzelstatement anzugeben
UNION ALL
SELECT
gehalt
FROM t_innendienst
WHERE gehalt > 450
Kannst Du Dir jetzt die weiteren Schritte vorstellen?
Freundliche Grüße
Vinzenz