![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 8.01.2015 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Mam utworzone tabele (posiadające ten sam klucz id_pracownika) wypełnione danymi: "Pracownicy" z kolumnami m.in "id_pracownika","imie","nazwisko" "godziny" z kolumnami "id_pracownika","data","ilosc_godzin" "nadgodziny" z kolumnami "id_pracownika","data","ilosc_nadgodzin" "premie" z kolumnami "id_pracownika","data","wynagrodzenie" Muszę utworzyć zapytanie, które podaje całkowite zarobki każdego pracownika (wyświetla: imie nazwisko zarobki) wliczając w to premie i nadgodziny za okres rozliczeniowy (np 2014-11-01 - 2014-11-30). Drugim zapytaniem jest wypisanie ilości nadgodzin konkretnego pracownika w konkretnym okresie czasu (2014-01-01 - 2014-12-31) Zatem całomiesięczny zarobek będzie wynosił (20*suma(ilosc_godzin)+30*sum(ilosc_nadgodzin)+sum(wynagrodzenie)). Proszę o pomoc. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 8.01.2015 Ostrzeżenie: (0%) ![]() ![]() |
Wcześniej i później próbowałem na różne sposoby, niestety jestem zielony w MySQL, a ostatni kod jaki próbowałem to:
Cytat Select id_pracownika,imie,nazwisko, ( (SELECT 25*sum(ilosc_godzin) FROM godziny WHERE data >="2014-11-01" AND data <="2014-11-30" AND id_pracownika.godziny=id_pracownika.Pracownicy) + (SELECT 30*sum(ilosc_nadgodzin) FROM nadgodziny WHERE data >="2014-11-01" AND data <="2014-11-30" AND id_pracownika.nadgodziny=id_pracownika.Pracownicy) + (SELECT sum(wynagrodzenie) FROM premie WHERE data >="2014-11-01" AND data <="2014-11-30" AND id_pracownika.premie=id_pracownika.Pracownicy) )AS suma FROM Pracownicy LEFT JOIN Pracownicy; Oczywiście to jest źle, ale siedzę nad tym bezproduktywnie, ktoś mógłby naprowadzić? Kod - nie uwzględniając dat, ale całą bazę danych - składającą się z dwóch miesięcy CODE Select a.imie,a.nazwisko,sum(b.ilosc_godzin) Ilosc_godzin,sum(c.ilosc_nadgodzin) Ilosc_nadgodzin, sum(d.wynagrodzenie) Premie, ((20*sum(b.ilosc_godzin))+(30*sum(c.ilosc_nadgodzin))+sum(d.wynagrodzenie)) suma from Pracownicy a join godziny b join nadgodziny c join premie d on (?) Group by a.nazwisko; Działa mi, ale pokazuje zbyt duże wyniki. Podejrzewam że popełniłem błąd w miejscu w którym powyżej dałem znak zapytania. Proszę o pomoc. Efekt: http://zapodaj.net/47da03606ebee.png.html Ten post edytował myschool 11.01.2015, 18:12:58 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 13.10.2025 - 06:37 |