Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> obsługa podzapytań w mysql 5.0+
pablo83
post 27.01.2007, 00:31:58
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 19.12.2006

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
sticker
post 27.01.2007, 11:29:10
Post #2





Grupa: Zarejestrowani
Postów: 611
Pomógł: 19
Dołączył: 28.02.2005
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


a probowałes skorzystać z having ?


--------------------
Go to the top of the page
+Quote Post
mysz
post 27.01.2007, 13:25:54
Post #3





Grupa: Zarejestrowani
Postów: 81
Pomógł: 0
Dołączył: 26.08.2006
Skąd: Szczecin

Ostrzeżenie: (0%)
-----


AFAIK podzapytania nie mogą się odwoływać do tej samej tabeli.


--------------------
urzenia.net
Go to the top of the page
+Quote Post
pablo83
post 27.01.2007, 17:11:25
Post #4





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 19.12.2006

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
mysz
post 27.01.2007, 22:34:44
Post #5





Grupa: Zarejestrowani
Postów: 81
Pomógł: 0
Dołączył: 26.08.2006
Skąd: Szczecin

Ostrzeżenie: (0%)
-----


@pablo83: racja, mój błąd, pomerdało mi się cosik :)


--------------------
urzenia.net
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.07.2025 - 21:15