Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySql] Pobranie z bazy danych 12 ostatnich emisięcy dla danego meisiąca
laresistance
post
Post #1





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 18.07.2012

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


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";
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 1)
mmmmmmm
post
Post #2





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


  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)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 09:21