![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 175 Pomógł: 30 Dołączył: 9.08.2007 Ostrzeżenie: (0%) ![]() ![]() |
Mam tabelę, w której w każdym rzędzie przechowuję m.in. datę utworzenia oraz login.
Jako rezultat ma wyjść tabelka - kolumny loginy, wiersze daty a w środku liczba wystąpień w tabeli dla danej daty i danego loginu: data | login1 | login2 | suma 2011-06-18 6 7 13 2011-06-19 2 1 3 Razem: 8 8 16 Na tą chwilę zrobiłem to w sposób taki, że pobieram jednym selectem distinct daty, drugim selectem loginy. Następnie lecę podwójnym foreach i dla każdej daty, wykonuję select count(*) dla każdego loginu. Takie rozwiązanie jest jednak mało wydajne (przy 12 datach i 9 loginach łączny czas zapytania zajmuje 2 sekundy (IMG:style_emoticons/default/smile.gif) ). Może ma ktoś wydajniejszy sposób do przetestowania? Poniżej kod jakby kogoś interesował:
|
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 748 Pomógł: 388 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
Cytat Baza zaprojektowana jest dobrze No i właśnie nie...cała komplikacja bierze się ze złego typu kolumny w bazie danych, dałeś datę jako INT i nie możesz po niej grupować bo pewnie jest tam inny timestamp dla każdego rekordu. 1. w sprawy powinno być id użytkownika a nie jego nazwa 2. data powinna być jako date Wtedy wszystko pobierasz jednym zapytaniem, grupując po 2 kolumnach:
sprawdziłem u siebie zapytanie zwraca liczbę spraw dla użytkownika i datę w php bardzo łatwo wyświetlisz to w takiej tabelce jaką chcesz uzyskać zapytanie zwróciło mi taki wynik:
Ten post edytował tehaha 18.06.2011, 16:52:23 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 11.10.2025 - 04:18 |