Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> #1111 - Invalid use of group function ;/
KatarzynaKatarzy...
post
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)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
thek
post
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)
Go to the top of the page
+Quote Post
KatarzynaKatarzy...
post
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
Go to the top of the page
+Quote Post
thek
post
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.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 19:25