Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Zoptymalizowanie kodu
KR2615
post
Post #1





Grupa: Zarejestrowani
Postów: 311
Pomógł: 13
Dołączył: 7.05.2007

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


Mam sobie panel pokazujacy mi statystyki z ostatnich miesiecy. Kod wygląda mniej więcej tak:
  1. $miesiace = array('09', '08', '07');
  2. while(list ($key, $miesiac) = each ($miesiace) ) {
  3. pokaztabele($miesiac);
  4. }

Funkja pokaztabele wyglada mniej wiecej tak:
  1. naglowek tabeli
  2. "SELECT COUNT(*) AS `krotki`, `added` FROM `rekordy` WHERE added LIKE '2016-$miesiac%' GROUP BY `added` ORDER BY `added` DESC";
  3. stopka tabeli


Moje pytanie brzmi: Jak wybrac z bazy wszystkie unikalne miesiace z ktorych funkcja pokaztabele() musi zostac wywolana?

Bo nie usmiecha mi sie kazdego pierwszego grzebanie w kodzie i poprawianie array'a $miesiace. Jak mozna to zoptymalizowac?
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Pomijajac juz tak drobny fakt, ze funkcja date() moze ci zwrocic aktualny miesiac i sobie mozesz na tej podstawie wygenerowac liste aktualnych miesiecy, to takie rzeczy robi sie jednym zapytaniem na bazie. Przy zalozeniu rzecz jasna ze columna added jest typu DATE a nie VARCHAR
Go to the top of the page
+Quote Post
trueblue
post
Post #3





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

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


Jeśli z rokiem:
  1. SELECT YEAR(added),MONTH(added) FROM rekordy GROUP BY YEAR(added),MONTH(added);


jeśli tylko miesiące:
  1. SELECT MONTH(added) FROM rekordy GROUP BY MONTH(added);
Go to the top of the page
+Quote Post
Pyton_000
post
Post #4





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Tylko @trueblue jeśli autor ma rekordy z poprzedniego roku to też się załapią (IMG:style_emoticons/default/smile.gif)

Nie prościej wyciągnąć x ostatnich miesięcy ? Tylko pytanie czy np. 3 pełne miesiące poprzednie + aktualny czy tylko 3 mc włacznie z obecnym (rozpoczynając od 1szego dnia miesiąca)
Go to the top of the page
+Quote Post
nospor
post
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Tylko @trueblue jeśli autor ma rekordy z poprzedniego roku to też się załapią
@Pyton o WHERE nie slyszal? (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
trueblue
post
Post #6





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

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


Cytat(Pyton_000 @ 7.09.2016, 18:10:33 ) *
Tylko @trueblue jeśli autor ma rekordy z poprzedniego roku to też się załapią (IMG:style_emoticons/default/smile.gif)

Pyton_000,
tak, ale ja nie wiem dla jakiego okresu mają być statystyki.

Ale ogólnie, to trochę bez sensu i najlepiej zrobić to tak jak nospor pisze. Bo teraz jest wyciągany zakres danych, który i tak wygeneruje się docelowym zapytaniem. Czyli można zrobić właśnie w jednym zapytaniu.
To w głównej mierze info do autora.

Ten post edytował trueblue 7.09.2016, 17:29:09
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.08.2025 - 07:08