Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: SELECT + 3x BETWEEN
Forum PHP.pl > Forum > Bazy danych > MySQL
intol
Witam. Posiadam tabelę, w której zapisywane są momenty, kiedy użytkownik wykonuje jakąś akcje. Ma ona następującą strukture:

id - unikalny identyfikator
timestamp - unixowy znacznik czasu
user_id - identyfikator uzytkownika

Chciałbym teraz policzyć, ilu użytkowników wykonało pewną akcję przynajmniej raz w tygodniu, przez ostatnie 3 tygodnie, czyli coś w tym stylu:

Kod
.... WHERE (timestamp BETWEEN $week1Start AND $week1End) AND  (timestamp BETWEEN $week2Start AND $week2End)...


Za bardzo nie wiem jak ułożyć to zapytanie, dlatego liczę na waszą pomoc.
elessar
uzyj union aby pobrac rekordy dla kazdego z warunkow
  1. SELECT DISTINCT /POLA_Z_BAZY/, '1' AS KIEDY
  2. FROM tabela
  3. WHERE WARUNEK_OST_TYDZIEN
  4. UNION
  5. SELECT DISTINCT /POLA_Z_BAZY/, '2' AS KIEDY
  6. FROM tabela
  7. WHERE WARUNEK_OST_3_TYG

i stworz z tego widok. Pozniej wystarczy zwykly count przy grupowaniu po polu KIEDY.
spenalzo
Zaraz zaraz... przez ostatnie 3 tygodnie, tak? Wiec po co kombinować z 6cioma wartościami - przeciez jak sie jeden tydzień kończy to zaczyna sie drugi...

  1. SELECT costam
  2. FROM tabela
  3. WHERE pole < $tydzien1Start AND pole > $tydzien3Koniec
intol
Dzięki spenalzo, ale chodziło o to że w KAŻDYM z tych trzech tygodni musiała być wykonana akcja, a nie np. 3 razy w ciągu jednego tygodnia.
spenalzo
No to coś nie pasuje... skoro timestamp to jest czas, to trudno, żeby jeden dzien był w 3 tygodniach na raz... Chyba, że czegoś nie zrozumiałęm blink.gif
intol
W bazie zapiusywane jest, kiedy uzytkownik wykonywał daną akcje. Teraz trzeba policzyć UŻYTKOWNIKOW, którzy wykonali daną akcję przynajmniej raz w tygodniu, przez ostatnie 3 tygodnie... dlatego mam (miałem? - nie wiem jeszcze, bo nie miałem jeszcze czasu przetestować rozwiązania z union) z tym zapytaniem problem.
spenalzo
No to pozostaje albo union albo 3 oddzielne zapytania - co też nie jest złym rozwiązaniem.
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.