Hallo,
ich hab mal ne Frage. Ich hab eine funktionierende SQL Anfrage mit MINUS erstellt die mir alle Länder gibt wo die Hauptstadt weniger als 500.000 Einwohner hat und das Land mehr als 5 Städte enthält.
|
SQL Code
|
1
2
3
4
5
6
7
8
9
10
|
(SELECT Country.Name
FROM Country INNER JOIN City ON City.Country = Country.Code
WHERE Country.Capital = City.Name AND City.Population < 500000)
MINUS
(SELECT Country.Name
FROM Country INNER JOIN City ON City.Country = Country.Code
GROUP BY Country.Name
HAVING COUNT(City.Name) > 5);
|
Jetzt bin ich in paar Folien nochmal auf EXISTS gestoßen was ja eine Unterabfrage realisiert. Leider habe ich es noch nicht ganz hinbekommen, wie das erfolgt und da wollte ich zuerst mal fragen wie ich das HAVING COUNT am besten realisiere?
|
SQL Code
|
1
2
3
4
5
6
7
8
9
|
SELECT Country.Name
FROM Country
WHERE EXISTS (
SELECT *
FROM City
WHERE Country.Capital = City.Name AND City.Population < 500000
)
GROUP BY Country.Name
HAVING COUNT(City.Name) > 5;
|
Und dann habe ich mir überlegt das die Abfrage mit MINUS ja besser für die Laufzeit ist da nicht für jeden Eintrag nochmal eine Unterabfrage gemacht werden muss. Stimmt das oder ist die Laufzeit da nicht sehr unterschiedlich?