Det effektivare tillvägagångssättet är i allmänhet att använda analytiska funktioner
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
Du kan dock också använda en underfråga
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)
Båda dessa metoder kommer att returnera flera rader om det finns flera avdelningar som har den lägsta budgeten. Med den analytiska funktionsmetoden kan du använda row_number
funktion snarare än rank
att godtyckligt bryta oavgjort om du vill returnera exakt 1 rad varje gång.