pablo83
27.01.2007, 00:31:58
Mysql 5.0 i wyższe wersje obsługują podzapytania w zapytaniach odnoszących się do kilku tabel?
Select Nazwa_Dzialu, Id_dzialu, Nazwisko, Zarobki from Kadra a inner join dzialy on a.id_dzialu=dzialy.id_dzialu where Zarobki = (Select Max(Zarobki) from Kadra b where b.id_dzialu =a.id_dzialu)To zadziała w mysql 5? Bo mi nie działa, nie wyrzuca błedu ale długo myśli. Co to może być? Chodzi mi bardziej o składnie niż logike, dlatego nie zamieszczam schematu tabel. Ktoś się w tym orientuje? Z góry dzięki.
PS W MSSQL to chyba

działało, pzdr.
sticker
27.01.2007, 11:29:10
a probowałes skorzystać z having ?
mysz
27.01.2007, 13:25:54
AFAIK podzapytania nie mogą się odwoływać do tej samej tabeli.
pablo83
27.01.2007, 17:11:25
Dzięki za zainteresowanie, już działa
Mylisz się mysz, można używając aliasów, jest to nawet często potrzebne, np gdy chcemy z tabeli otrzymać maksymalną wielkość z jednej kolumny(i wartości sąsiadów!) grupując według innej.
np:
tabela -> ludzie
id, imie, wiek, hobby
1,pawel,20,sport
2,marek,23,sport
3,jarek,19,muzyka
select max(wiek),imie from ludzie group by hobby
da wynik:
1,pawel,23,sport
3,jarek,19,muzyka
i jest źle bo najstarszy koleś z hobby = sport to marek a nie pawel (imie=pawel jest pierwsze w kolejności rekordów gdzie występuje hobby=sport)
Poprawny select to:
select wiek, imie from ludzie a where wiek=(select max(wiek) from ludzie b where b.hobby = a.hobby)
1,marek,23,sport
3,jarek,19,muzyka
Nie sprawdzałem tego ale myśle że jest ok, pzdr
mysz
27.01.2007, 22:34:44
@pablo83: racja, mój błąd, pomerdało mi się cosik :)