Der effizientere Ansatz ist im Allgemeinen die Verwendung von Analysefunktionen
SELECT hospitalcode,
name,
ward,
annualbudget
FROM (SELECT h.hospitalcode,
h.name,
w.wardno,
w.annualbudget,
rank() over (order by w.annualbudget asc) rnk
FROM hospital h
JOIN ward w
ON (h.hospitalcode = w.hospitalcode))
WHERE rnk = 1
Sie können aber auch eine Unterabfrage verwenden
SELECT h.hospitalcode,
h.name,
w.wardno,
w.annualbudget
FROM hospital h
JOIN ward w
ON (h.hospitalcode = w.hospitalcode)
WHERE w.annualbudget = (SELECT MIN(annualbudget)
FROM ward)
Beide Methoden geben mehrere Zeilen zurück, wenn es mehrere Stationen gibt, die für das niedrigste Budget gebunden sind. Bei der analytischen Funktionsmethode können Sie die row_number
verwenden Funktion statt rank
um das Unentschieden willkürlich zu brechen, wenn Sie jedes Mal genau 1 Zeile zurückgeben möchten.