Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySql] Pobranie z bazy danych 12 ostatnich emisięcy dla danego meisiąca
Forum PHP.pl > Forum > Bazy danych > MySQL
laresistance
MAm tabelę, z któej pobieram, któa ma kolumny:
data zapytania 'YYYY/RR'
data zainteresowania 'YYYY/RR'
ilosc

Mam tej tabeli wyrzucić dla danego miesiąca w danym roku zainteresowania wszystkie meisiące zapytania z ostatnich 12 miesięcy
Czyli przykłądowo jeśli interesuje mnie data zainteresowania 2012/4 to dla tej daty ma mi wyrzucić:
data_zainteresowania data_zapytania ilosc
2012/4 2011/5 151
2012/4 2011/6 146
2012/4 2011/7 122
2012/4 2011/8 5445
2012/4 2011/9 111
2012/4 2011/10 55
2012/4 2011/11 487
2012/4 2011/12 25
2012/4 2012/1 45
2012/4 2012/2 85
2012/4 2012/3 87
2012/4 2012/4 21

itd dla każdej daty zainteresowania
Dodatkowo, żeby było lepiej operować na liczbach rozbiłem te daty na rok i miesiąc funkcją SUBSTR wiec tabele wyjściowe powinny wyglądać:
rok_zainteresowania miesiac_zainteresowania rok_zapytania miesiac_zapytania ilosc

Dodam, że wszystkie wartości są w tabeli poczatkowej jako stringi zapiusywane w postaci YYYY/MM dlatego trudno mi tu operować na datach chyba, że ktoś wie jak bo jak usiłuję zmienić np 2012/7 na date to mi wywala błąd. Musiałyby być wszystkie meisiace zapisywane 2cyfrowo a nie są. Zrobiłęm takie zapytanie, ale jest błędne. Ktoś wie, jak to zrobić poprawnie?

  1. SELECT
  2. SUBSTR(data_zainteresowania, 1,4)::integer AS rok_zaint,
  3. SUBSTR(data_zainteresowania, 6,7)::integer AS miesiac_zaint,
  4. SUBSTR(data_zapytania, 1,4)::integer AS rok_zapytania,
  5. SUBSTR(data_zapytania, 6,7)::integer AS miesiac_zapytania,
  6. ilosc
  7. FROM moja_tabela
  8. WHERE IF (SUBSTR(data_zapytania, 1,4)::integer = SUBSTR(data_zainteresowania, 1,4)::integer,
  9. SUBSTR(data_zapytania, 6,7)::integer <= SUBSTR(data_zainteresowania, 6,7)::integer,
  10. SUBSTR(data_zapytania, 6,7)::integer +1<= SUBSTR(data_zainteresowania, 6,7)::integer)
  11. ORDER BY data_zapytania ASC";
mmmmmmm
  1. SELECT Year(data_zainteresowania), Month(data_zainteresowania), Year(data_zapytania), Month(data_zapytania), ilosc FROM (SELECT Cast(Concat(data_zainteresowania, '/1') AS date) data_zainteresowania, Cast(Concat(data_zapytania, '/1') AS date) data_zapytania, ilosc FROM moja_tabela) tabela
  2. WHERE Year(data_zainteresowania)=Year(data_zapytania) AND Month(data_zainteresowania)=Month(data_zapytania)
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.