Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> dane z poprzedniego miesiąca
Spirit86
post
Post #1





Grupa: Zarejestrowani
Postów: 607
Pomógł: 23
Dołączył: 8.09.2004
Skąd: Wrocław

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


Witam, nie mogę coś wpaść na poymsł, jak pobrać dane z poprzedniego miesiąca, piszę coś na wzór:
  1. SELECT count( id ) AS `ile`, date
  2. FROM oo WHERE MONTH(`date`)<NOW()

Niestety, nie jest to poprawna składnia :|.


--------------------
Audio: Metallica, Soil, RHCP, OffSpring, Green Day, "Retro", Gorillaz, Disturbed, Coma
DB: MySQL 4.1 | php: 4.4.3 Pomogłem Ci? Wciśnij przycisk POMÓGŁ.
Go to the top of the page
+Quote Post
mhs
post
Post #2





Grupa: Zarejestrowani
Postów: 764
Pomógł: 3
Dołączył: 30.04.2003

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


może coś takiego?

  1. SELECT COUNT(*) AS ile
  2. FROM oo WHERE MONTH(date) = (MONTH(NOW()) - 1)
Go to the top of the page
+Quote Post
Spirit86
post
Post #3





Grupa: Zarejestrowani
Postów: 607
Pomógł: 23
Dołączył: 8.09.2004
Skąd: Wrocław

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


niestety nie dizała :|
Spokojnie, nie wszyscy na raz, staarczy mniejsca dla Wszystkich :]


--------------------
Audio: Metallica, Soil, RHCP, OffSpring, Green Day, "Retro", Gorillaz, Disturbed, Coma
DB: MySQL 4.1 | php: 4.4.3 Pomogłem Ci? Wciśnij przycisk POMÓGŁ.
Go to the top of the page
+Quote Post
mhs
post
Post #4





Grupa: Zarejestrowani
Postów: 764
Pomógł: 3
Dołączył: 30.04.2003

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


to moze w takim badz razie napisalbys jaka masz strukture bazy danych, jakie wysylasz zapytanie w koncu jaki blad sie zglasza a nie czepial sie ze nikt nie odpowiada?!
Go to the top of the page
+Quote Post
SongoQ
post
Post #5





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


Zastosuj funkcje interval


--------------------
Go to the top of the page
+Quote Post
Spirit86
post
Post #6





Grupa: Zarejestrowani
Postów: 607
Pomógł: 23
Dołączył: 8.09.2004
Skąd: Wrocław

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


@SongoQ: nie mam za bardzo pomysłu na wykorzystanie Twojej metody, mam wypisywać każdy miesiac osobno?

struktura wygląda tak:
nazwa - typ
id - int
date - date
(...)
po prostu nie zwraca mi wyników po zapytaniu SQL, a na pewno powinnien podać mi kilka.
Struktura skryptu itp. sa na pewno dobrze

Ten post edytował Spirit86 26.03.2005, 12:32:08


--------------------
Audio: Metallica, Soil, RHCP, OffSpring, Green Day, "Retro", Gorillaz, Disturbed, Coma
DB: MySQL 4.1 | php: 4.4.3 Pomogłem Ci? Wciśnij przycisk POMÓGŁ.
Go to the top of the page
+Quote Post
behemot
post
Post #7





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 17.07.2003
Skąd: Tarnów/Kraków

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


a może coś takiego będzie działać (psql):
  1. SELECT *
  2. FROM tabela WHERE extract(month
  3. FROM DATA) = extract (month
  4. FROM current_timestamp::date - interval '1 month');


Pisane z palce ale chyba cos w tym stylu.

Pozdrawiam,
Kuba

Ten post edytował behemot 26.03.2005, 12:55:32
Go to the top of the page
+Quote Post
SongoQ
post
Post #8





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


@Spirit86 Mozesz uzyc przedzialu dat.


--------------------
Go to the top of the page
+Quote Post
mhs
post
Post #9





Grupa: Zarejestrowani
Postów: 764
Pomógł: 3
Dołączył: 30.04.2003

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


Witaj!

Mój podany wcześniej przykład był bliski temu co chciałeś osiągnąć i w przypadku prawidłowego jego zastosowania na pewno zwróciłby Ci wartości (chyba - nie sprawdzałem - byłyby kłopoty na przełomie roku). W związku z tym w tej chwili ze swojej strony proponuję drugie rozwiązanie.

  1. DROP TABLE IF EXISTS test;
  2.  
  3. CREATE TABLE test (
  4. id int UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
  5. DATA date
  6. );
  7.  
  8. INSERT
  9. INTO test (DATA) VALUES
  10. ("2005-01-01"),
  11. ("2005-01-02"),
  12. ("2005-01-03"),
  13. ("2005-02-01"),
  14. ("2005-02-02"),
  15. ("2005-02-03"),
  16. ("2005-02-04"),
  17. ("2005-02-05"),
  18. ("2005-03-01"),
  19. ("2005-03-02");



  1. SELECT COUNT(*)
  2. FROM TEST WHERE MONTH(DATA) = MONTH(DATE_ADD(CURDATE(), INTERVAL - 1 MONTH));



PS. Ja nie sprawdzałem dokładnie tego podanego przykładu (nie chciało mi się sprawdzać dla większej ilości przypadków, jednak jak następnym razem napiszesz, że coś Ci nie działa to wcześniej zapoznać się z funkcjami użytymi w powyższym zapytaniu a na pewno przy odrobinie dobrej woli uda Ci się znaleźć rozwiązanie.
Go to the top of the page
+Quote Post
No1B
post
Post #10





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 10.11.2003

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


zakladajac ze miesiacem nie jest styczen w mssql zadziala cosik takiego
  1. SELECT count(id) AS 'ile', date
  2. FROM oo WHERE year(date) = year(getdate()) AND month(date) = month(getdate())-1
  3. GROUP BY date


count jest funkcja agregujaca i wyniki trzeba w mssql'u grupowac.
dla stycznia trzba napisac case'a ale niestety nie mam teraz zadnej bazy przy sobie
i nie mam jak sprawdzic skryptu.
mam nadzieje ze cosik pomoge.

Pozdrawiam


--------------------
Apache 2.0.53 | PHP 5.0.3 | MSSQL 2000 SP4
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 - 12:14