Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: #1111 - Invalid use of group function ;/
Forum PHP.pl > Forum > Bazy danych
KatarzynaKatarzyna
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" sad.gif
thek
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ć 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 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 smile.gif
KatarzynaKatarzyna
bardzo dziękuje za odzew 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...





edit:
ok, zrobiłam jak napisałeś i faktycznie proste i działa biggrin.gif dzieki! ale temat jest z podzapytań, dlatego kminiłam podzapytanie... ale cóż, będzie tak wink.gif
pozdrawiam.
thek
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.
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-2025 Invision Power Services, Inc.