Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zoptymalizowanie kodu
Forum PHP.pl > Forum > PHP
KR2615
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?
nospor
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
trueblue
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);
Pyton_000
Tylko @trueblue jeśli autor ma rekordy z poprzedniego roku to też się załapią 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)
nospor
Cytat
Tylko @trueblue jeśli autor ma rekordy z poprzedniego roku to też się załapią
@Pyton o WHERE nie slyszal? wink.gif
trueblue
Cytat(Pyton_000 @ 7.09.2016, 18:10:33 ) *
Tylko @trueblue jeśli autor ma rekordy z poprzedniego roku to też się załapią 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.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.