[MySQL][PHP] Statystyki sprzedaży |
[MySQL][PHP] Statystyki sprzedaży |
17.02.2014, 18:21:49
Post
#1
|
|
Grupa: Zarejestrowani Postów: 358 Pomógł: 0 Dołączył: 19.04.2012 Ostrzeżenie: (0%) |
No i kolejny problem z zapytaniem do bazy mysql...
Robię statystyki sprzedaży w mini sklepie na autorskim skrypcie. Muszę wprowadzić coś w rodzaju statystyk sprzedaży. Mam tabele "zarobki" gdzie trzymam całe info o wpływach ze sprzedaży produktów. Chcę zrobić statystyki z każdego miesiąca, czyli generalnie to zrobiłbym to tak:
I to wyświetli mi statystyki z miesiąca luty 2014, ale potrzebuję statystyk z każdego dnia w tym miesiącu, czyli: 01-02-2014 | zarobki | id_usera 02-02-2014 | zarobki | id_usera 03-02-2014 | zarobki | id_usera [...] 17-02-2014 | zarobki | id_usera Do tego, żeby nie pokazywało statystyk z dni, których jeszcze nie było w tym miesiącu... No i kompletnie nie wiem jak to zrobić :/ Ten post edytował d.stp 17.02.2014, 18:22:47 |
|
|
17.02.2014, 18:56:45
Post
#2
|
|
Grupa: Zarejestrowani Postów: 2 707 Pomógł: 290 Dołączył: 16.12.2008 Skąd: Śląsk Ostrzeżenie: (0%) |
Chcę zrobić statystyki z każdego miesiąca, czyli generalnie to zrobiłbym to tak:
I to wyświetli mi statystyki z miesiąca luty 2014 Szczerze wątpię chyba że masz taką beznadziejną strukturę bazy i trzymasz daty w formacie MM-YYYY. Ogólnie najprościej pętlą jednak wtedy zapytań jest troszkę dużo - np. 31 w najgorszym wypadku. Jednym zapytaniem też by szło, popróbowałbym z grupowaniem, SUM i na końcu order po kolumnie z dniami. -------------------- |
|
|
17.02.2014, 19:03:02
Post
#3
|
|
Grupa: Zarejestrowani Postów: 358 Pomógł: 0 Dołączył: 19.04.2012 Ostrzeżenie: (0%) |
Trzymam daty w formacie XX-XX-XXXX, jak mam inaczej trzymać? Tak jest mi najwygodniej.
Mógłbyś pomóc z tym zapytaniem? Majstruje od kilku godzin, ale nie mogę nic wymyślić. W formularzu mam do wyboru miesiąc oraz rok. W PHP pobieram sobie te wartości z których użytkownik chce wyświetlić statystyki. Nie mam pojęcia jak to zrobić... Próbowałem z pętlą FOR, tak na harpagana nawet:
No ale to nie o to chodzi ;/ |
|
|
17.02.2014, 19:10:58
Post
#4
|
|
Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) |
Jeżeli trzymasz datę w formacie XX-XX-XXXX a nie RRRR-MM-DD to znaczy, że nie masz tej kolumny typu date bądź datetime. A to jest typ do trzymania dat
|
|
|
17.02.2014, 19:15:55
Post
#5
|
|
Grupa: Zarejestrowani Postów: 358 Pomógł: 0 Dołączył: 19.04.2012 Ostrzeżenie: (0%) |
Pole z datą mam w varchar, nie wiedziałem o date i datetime.
No ale to nie jest chyba jakoś bardzo istotne teraz |
|
|
17.02.2014, 22:24:20
Post
#6
|
|
Grupa: Zarejestrowani Postów: 2 707 Pomógł: 290 Dołączył: 16.12.2008 Skąd: Śląsk Ostrzeżenie: (0%) |
No ale to nie jest chyba jakoś bardzo istotne teraz Czemu nie teraz? Chyba lepiej wcześnie zacząć konstruować strukturę bazy poprawnie? Ten post edytował markonix 17.02.2014, 22:24:56 -------------------- |
|
|
17.02.2014, 23:22:47
Post
#7
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) |
Co do daty to zmień czym prędzej.
Co do zaś zarobków, to możesz to zrobić na (przynajmniej) dwa sposoby: 1. zapytanie w stylu : SELECT id_usera, data, sum(zarobki) FROM zarobki GROUP BY id_usera, data ORER BY id_usera, data ale to ci nie wykaże WSZYSTKICH dni, tylko te, które są w bazie. Być może w święta nie ma zarobków, ale czy jest wtedy sens pokazywać datę bez wartości? Jeśli już się na to uprzesz to możesz to zrobić w po stronie PHP. 2. Skomplikowany SELECT, który uwzględnia wszystkie dni... coś w stylu: SELECT '01' dzien UNION SELECT '02' UNION SELECT '03' ... i to połączyć do daty. dalej analogicznie. W obu przypadkach zapytanie nie powinno pokazać zarobków z dni, których jeszcze nie było z tej prostej przyczyny, że takich rekordów nie pownno jeszcze być. |
|
|
18.02.2014, 09:51:31
Post
#8
|
|
Grupa: Zarejestrowani Postów: 28 Pomógł: 3 Dołączył: 23.07.2009 Ostrzeżenie: (10%) |
No i kolejny problem z zapytaniem do bazy mysql... Robię statystyki sprzedaży w mini sklepie na autorskim skrypcie. Muszę wprowadzić coś w rodzaju statystyk sprzedaży. Mam tabele "zarobki" gdzie trzymam całe info o wpływach ze sprzedaży produktów. Chcę zrobić statystyki z każdego miesiąca, czyli generalnie to zrobiłbym to tak:
I to wyświetli mi statystyki z miesiąca luty 2014, ale potrzebuję statystyk z każdego dnia w tym miesiącu, czyli: 01-02-2014 | zarobki | id_usera 02-02-2014 | zarobki | id_usera 03-02-2014 | zarobki | id_usera [...] 17-02-2014 | zarobki | id_usera Do tego, żeby nie pokazywało statystyk z dni, których jeszcze nie było w tym miesiącu... No i kompletnie nie wiem jak to zrobić :/ Spróbuj pokombinować z wyrażeniami regularnymi. http://tom000.info/blog/mysql__wyrazenia_regularne.htmlKurs wyrażeń regularnych w MySQL Poniżej masz wzorzec do formatu dwie cyfry od 0-9 plus -02-2013 Kod ^([0-9]{2}-02-2013)$ A tutaj stronę do testowania wyrażeń http://regexp.pl Myślę, że w ten sposób powinno ci się udać otrzymać wyniki, które będziesz mógł przepuścić przez tą pętlę.
Z tym, że wydaje mi się że $data_dzisiejsza musisz zrzutować na int, bo date chyba zwraca string. Ten post edytował Martin-ZG 18.02.2014, 09:56:42 |
|
|
Wersja Lo-Fi | Aktualny czas: 27.04.2024 - 10:52 |