![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 25.01.2012 Ostrzeżenie: (0%) ![]() ![]() |
Może jest tu ktoś kto byłby uprzejmy mi pomóc. jestem początkująca, więc bardzo prosze nie krzyczec ;p
czy jest w tym kodzie jakiś błąd? SELECT ID_ZESP, SUM( PLACA_POD ) AS suma_plac FROM PRACOWNICY HAVING SUM( PLACA_POD ) = ( SELECT MAX( SUM( PLACA_POD ) ) FROM PRACOWNICY GROUP BY ID_ZESP ) ps. korzystam z MySQL 5.1.49 meczę się z zadaniami z SQLa, znalazłam nawet gotowe rozwiązania tych zadań w internecie- są one identyczne jak moje rozwiązania, a cały czas dostaje komunikat " Invalid use of group function" (IMG:style_emoticons/default/sad.gif) |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Klauzula HAVING z reguły jest łączona z GROUP BY. W Twoim wypadku masz z leksza to pokręcone. Innymi słowy ciężko do końca powiedzieć co to ma robić (IMG:style_emoticons/default/smile.gif) Widzę, że jest jakieś ID zespołu i suma... Mniemam, że chodziło Ci o sumę zarobków wszystkich pracowników w danym zespole...
W takim wypadku zamotałaś strasznie (IMG:style_emoticons/default/wink.gif) Wystarczyło pogrupować pracowników po id_zespołu i zrobić sumę. No ale widzę też gdzieś max przy podzapytaniu i nieco głupieję, bo nie wiem cy ta suma to nie ma być suma wszystkich w zespole, którzy zarabiają najwięcej. Napisz CO chcesz osiągnąć, bo z tego zapytania cokolwiek wywnioskować bardzo trudno. Tak na to patrzę i mam wrażenie, że może też chodzić o wybranie tego zespołu, którego suma płac pracowników jest największa. Ale to już po prostu zgaduję... W takim wypadku można się obejść bez cudowania. Wystarczy to co napisałem wzbogacić o ORDER BY ta suma malejąco i dać LIMIT 1 (IMG:style_emoticons/default/smile.gif) |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 25.01.2012 Ostrzeżenie: (0%) ![]() ![]() |
bardzo dziękuje za odzew (IMG:style_emoticons/default/smile.gif)
otóż chce wyświetlić id_zespołów wypłacających swoim pracownikom najwięcej pieniędzy. wrzucę screena tabeli PRACOWNICY, żeby było jaśniej... (IMG:http://img824.imageshack.us/img824/9750/30935867.jpg) edit: ok, zrobiłam jak napisałeś i faktycznie proste i działa (IMG:style_emoticons/default/biggrin.gif) dzieki! ale temat jest z podzapytań, dlatego kminiłam podzapytanie... ale cóż, będzie tak (IMG:style_emoticons/default/wink.gif) pozdrawiam. Ten post edytował KatarzynaKatarzyna 25.01.2012, 23:50:21 |
|
|
![]()
Post
#4
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Czasem sztuczne narzucanie jest gorsze, ponieważ prowadzi do tworzenia mało przemyślanych struktur i zapytań w miejsce prostszych, bardziej naturalnych. Gdybym miał to w jakiś sposób podzapytaniem strzelić, to ewentualnie bym za FROM nie wziął całej tabeli pracownicy, ale wszystkie rekordy z niej z PLACA_DOD różne od NULL i to uznał za subquery.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 19:25 |