Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wpisy z ostatnich 7 dni, Pomoc w zapytanku
crooger
post
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 27.03.2005

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


Witam,
zupełnie nie wiem jak się za to zabrać. Muszę wybrać z tabeli mniej więcej takiej:
  1. CREATE TABLE uzytkownicy (
  2. id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  3. wersja INTEGER UNSIGNED NOT NULL ,
  4. imie VARCHAR(50) NOT NULL ,
  5. nazwisko VARCHAR(50) NOT NULL ,
  6. opis TEXT NOT NULL ,
  7. wprowadzono DATETIME NOT NULL ,
  8. zatwierdzono DATETIME NULL ,
  9. PRIMARY KEY(id, wersja)


ilość wprowadzonych zmian w ostatnich 7 dniach. Czyli tak:
Kod
Dzien      | Ile
-----------------
2009-03-10 | 10
2009-03-09 | 6
2009-03-08 | 0
...


Problem będzie na pewno w przypadku gdy w danym dniu nie wprowadzi nie będzie żadnego wpisu.
Z góry dzięki za pomoc
Go to the top of the page
+Quote Post
kefirek
post
Post #2





Grupa: Zarejestrowani
Postów: 781
Pomógł: 256
Dołączył: 29.06.2008

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


  1. SELECT wprowadzono, COUNT(wprowadzono) AS ile FROM uzytkownicy WHERE DATE(wprowadzono) = CURDATE() - INTERVAL 7 DAY
Go to the top of the page
+Quote Post
Mephistofeles
post
Post #3





Grupa: Zarejestrowani
Postów: 1 182
Pomógł: 115
Dołączył: 4.03.2009
Skąd: Myszków

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


Próbowałem u siebie, bo sam myślę nad rozwiązaniem tego smile.gif, i to nie działa.
"#1140 - Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause"
A poza tym to twoje zapytanie zwróci wyniki tylko wprowadzone 7 dni temu, powinno być chyba >=.

  1. SELECT wprowadzono, count(wprowadzono) FROM uzytkownicy WHERE DATE(wprowadzono) >= CURDATE() - INTERVAL 7 DAY GROUP BY wprowadzono
To natomiast działa smile.gif.

Ten post edytował Mephistofeles 10.03.2009, 20:49:59
Go to the top of the page
+Quote Post
phpion
post
Post #4





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Cytat(Mephistofeles @ 10.03.2009, 22:43:56 ) *
  1. SELECT wprowadzono, count(wprowadzono) FROM uzytkownicy WHERE DATE(wprowadzono) >= CURDATE() - INTERVAL 7 DAY GROUP BY wprowadzono
To natomiast działa smile.gif.

Chyba powinno być GROUP BY DATE(wprowadzono) bo Twój przykład pogrupuje dane z dokładnością czasową co do sekundy.
Go to the top of the page
+Quote Post
Mephistofeles
post
Post #5





Grupa: Zarejestrowani
Postów: 1 182
Pomógł: 115
Dołączył: 4.03.2009
Skąd: Myszków

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


Hmm, no może, nie zwróciłem uwagi bo dane testowe wprowadzałem z jedną godziną winksmiley.jpg.
Go to the top of the page
+Quote Post
crooger
post
Post #6





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 27.03.2005

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


Wszystko ładnie pięknie panowie, problemem jest tutaj to, że jeżeli w danym dniu nie wprowadzono niczego to taki dzień się nie pojawi na liście. W sumie oczywiste, ale czy jest jakieś rozwiązanie tego ?
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: 21.08.2025 - 04:25