Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> problem z zapytaniem sql
kotek2185
post
Post #1





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 7.12.2011

Ostrzeżenie: (0%)
-----


Witam, mam twardy orzech do zgryzienia, otoz próbuje zrobic liste obecnosci generowana na podstawie uzupelnianej tabeli. Tabela ma postac:

id | data | czas_w_h | osoba

1 | 2016-11-21 | 5 | xx
2 | 2016-11-21 | 3 | yy
3 | 2016-11-21 | 5 | zz
4 | 2016-11-21 | 2 | xx
5 | 2016-11-21 | 2 | yy
6 | 2016-11-21 | 2 | zz
7 | 2016-11-22 | 6 | xx
8 | 2016-11-22 | 2 | yy
9 | 2016-11-22 | 6 | zz
10 | 2016-11-23 | 6 | xx
11 | 2016-11-23 | 2 | yy
12 | 2016-11-23 | 8 | zz

Próbuje uzyskać postać:

xx yy zz
2016-11-21 7 5 7
2016-11-22 6 2 6
2016-11-23 6 2 8


Jest w ogóle możliwość wyciągniecia w ten sposób danych zapytaniem by mi grupowalo w pewnym sensie po osobie i sumowalo jednoczesnie godziny z danego dnia dla danej osoby?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
kapslokk
post
Post #2





Grupa: Zarejestrowani
Postów: 965
Pomógł: 285
Dołączył: 19.06.2015
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


  1. SELECT id, DATA, sum(czas_w_h), osoba FROM tabela GROUP BY DATA, osoba;

I pozniej musisz sobie w PHP obrobić te dane, żeby stworzyć taka tablice jak chcesz.
Go to the top of the page
+Quote Post
trueblue
post
Post #3





Grupa: Zarejestrowani
Postów: 6 809
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


  1. SELECT DATA, SUM(IF(osoba='xx',czas_w_h,0)), SUM(IF(osoba='yy',czas_w_h,0)), SUM(IF(osoba='zz',czas_w_h,0)) FROM tabela GROUP BY DATA;


Ten post edytował trueblue 1.12.2016, 14:39:43
Go to the top of the page
+Quote Post
kotek2185
post
Post #4





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 7.12.2011

Ostrzeżenie: (0%)
-----


  1. SELECT id, DATA, sum(czas_w_h), osoba FROM tabela GROUP BY DATA, osoba;

wszystko ok, tylko takie zapytanie zwraca mi tablice zgrupowana tylko po dacie, sumuje czas, ale po osobie juz nie grupuje...

Ten post edytował kotek2185 1.12.2016, 14:11:32
Go to the top of the page
+Quote Post
kapslokk
post
Post #5





Grupa: Zarejestrowani
Postów: 965
Pomógł: 285
Dołączył: 19.06.2015
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Cytat
wszystko ok, tylko takie zapytanie zwraca mi tablice zgrupowana tylko po dacie, sumuje czas, ale po osobie juz nie grupuje...


CODE
mysql> select * from test;
+----+------------+-------+--------+
| id | data | hours | person |
+----+------------+-------+--------+
| 1 | 2016-11-21 | 5 | xx |
| 2 | 2016-11-21 | 3 | yy |
| 3 | 2016-11-21 | 5 | zz |
| 4 | 2016-11-21 | 2 | xx |
| 5 | 2016-11-21 | 2 | yy |
| 6 | 2016-11-21 | 2 | zz |
| 7 | 2016-11-22 | 6 | xx |
| 8 | 2016-11-22 | 2 | yy |
| 9 | 2016-11-22 | 6 | zz |
| 10 | 2016-11-23 | 6 | xx |
| 11 | 2016-11-23 | 2 | yy |
| 12 | 2016-11-23 | 8 | zz |
+----+------------+-------+--------+
12 rows in set (0.00 sec)


CODE
mysql> select id, data, sum(hours), person from test group by data, person;
+----+------------+------------+--------+
| id | data | sum(hours) | person |
+----+------------+------------+--------+
| 1 | 2016-11-21 | 7 | xx |
| 2 | 2016-11-21 | 5 | yy |
| 3 | 2016-11-21 | 7 | zz |
| 7 | 2016-11-22 | 6 | xx |
| 8 | 2016-11-22 | 2 | yy |
| 9 | 2016-11-22 | 6 | zz |
| 10 | 2016-11-23 | 6 | xx |
| 11 | 2016-11-23 | 2 | yy |
| 12 | 2016-11-23 | 8 | zz |
+----+------------+------------+--------+
9 rows in set (0.00 sec)


U mnie grupuje. Teraz wystarczy obrobić w PHP i bedzie dokladnie tak jak chcesz
Go to the top of the page
+Quote Post
kotek2185
post
Post #6





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 7.12.2011

Ostrzeżenie: (0%)
-----


ok racja, moj blad. dziex (IMG:style_emoticons/default/smile.gif)
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: 23.12.2025 - 16:45