Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Sumowanie elementów z różnych tabel
myschool
post
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.

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
myschool
post
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
Go to the top of the page
+Quote Post

Posty w temacie


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: 13.10.2025 - 06:37