group by, having i problem z selectem

0

Mam takie tabelki:
OSOBA (id, imie) oraz ADRES(id, osoba_id, ulica) (osoba_id jest fk do osoba(id))
z czego widac ze jedna osoba moze miec wiele adresow. Mam problem z zapytaniem ktore by mi zwrocilo id adresow wszystkich osob ktore maja tylko 1 adres. Poki co mam:

select max(a.id) from adres a inner join osoba o on a.osoba_id = o.id group by a.osoba_id having count(a.id) = 1;

Ten max moze byc avg lub min poniewaz to i tak tylko 1 krotke zwroci, ale nie podoba mi sie. Robie to tylko dlatego ze gdy nie dam maxa, dostaje blad ze select moze miec tylko kolumny z group by lub funkcje agregujace, co wlasnie robie. Da sie to jakos lepiej rozwiazac?

0
SELECT a.id FROM ADRES a JOIN (SELECT osoba_id FROM ADRES GROUP BY osoba_id HAVING Count(*)=1) x ON x.osoba_id=a.osoba_id
0

Ok, z subselectem tez wiem jak zrobic, ale w tym wypadku wydaje mi sie ze moja pierwsza propozycja bedzie szybciej dzialac?

0
SELECT Max(id) FROM ADRES GROUP BY osoba_id HAVING COUNT(*)=1
0

Dzieki bardzo.

1 użytkowników online, w tym zalogowanych: 0, gości: 1