Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: obsługa podzapytań w mysql 5.0+
Forum PHP.pl > Forum > Bazy danych > MySQL
pablo83
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 smile.gif działało, pzdr.
sticker
a probowałes skorzystać z having ?
mysz
AFAIK podzapytania nie mogą się odwoływać do tej samej tabeli.
pablo83
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
@pablo83: racja, mój błąd, pomerdało mi się cosik :)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.