SQL-Frage
Denise PP.
- programmiertechnik
0 Hopsel0 Frank (no reg)
Hallo,
ich brauche mal Eure Unterstützung; folgendes Problem:
SELECT WOHNEINHEIT FROM Tab1 where .....
...nun sollen nur die Sätze selektiert werden, wo in einen anderen Tabelle Tab2 die Summe größer als 14 ist, also so: count(PERSONEN_aus_Tab2) > 14
Tab2 sieht ungefähr so aus:
WOHNEINHEIT PERSONEN ANZAHL
X Müller 5
X Meier 5
X SCHULZE 5
Y HORST .....
Weil X mehr als 14 Personen hat, soll X in Tab1 selektiert werden.
Ich bin noch nicht so lange am programmieren und stoße hier auf meine Grenzen...
Danke für Eure Hilfe....
Hi Denise!
SELECT Tab1.WOHNEINHEIT
FROM Tab1
INNER JOIN Tab2 ON (Tab1.WOHNEINHEIT = Tab2.WOHNEINHEIT) AND (SUM(Tab2 .PERSONEN) > 14)
Ungetestet. Ich hoffe, es funktioniert. Aber die Datenbankprofis werden schon einschreiten, wenn es nicht stimmt. =)
MfG H☼psel
Hi,
SELECT Tab1.WOHNEINHEIT
FROM Tab1
INNER JOIN Tab2 ON (Tab1.WOHNEINHEIT = Tab2.WOHNEINHEIT) AND (SUM(Tab2 .PERSONEN) > 14)
>
> Ungetestet. Ich hoffe, es funktioniert. Aber die Datenbankprofis werden schon einschreiten, wenn es nicht stimmt. =)
Soweit ich mich erinnere muss man bei Aggregat Funktionen (wie SUM) GROUP BY und HAVING benutzen.
< http://www.devtrain.de/artikel_289.aspx>
Gruß!
Hi,
jenachdem was du alles ausgeben willst und je nach Datenbanksystem (Oracle, MS SQL, mySQL) geht das in einer einzelnen Abfrage oder mit einer korrelier(ten/enden) Unterabfrage.
So könnte es gehen:
SELECT WOHNEINHEIT
FROM Tab1 outerTab
WHERE WOHNEINHEIT IN
(SELECT WOHNEINHEIT
FROM Tab2
GROUP BY WOHNEINHEIT
HAVING COUNT(Personen) > 14)
Ciao, Frank