Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: grupowanie wyników
Forum PHP.pl > Forum > Bazy danych > MySQL
drbane
Mam mniej więcej taką strukturę danych:
Cytat
id INT(11)
name CHAR(200)
rangeid INT(11)
datechange (DATETIME)


Każdy nowy rekord może mieć identyczne pole rangeid i datę i czas (powiedzmy że wstawiłem 10 nowych rekordów w tym samy czasie). Jednakże tabela zawiera dużo danych dodawanych o różnych dniach itd.

Chodzi mi generalnie o pobranie rekordów o danym zakresie (np. DATECHANGE od 2007-01-01 do 2007-07-01) i pogrupowanie tego tak żeby pokazywało np. miesiącami, np.:

Cytat
2007-01-01
tutaj lista rekordow dodanych tego dnia
2007-01-02
...


Szczerze mówiać nie wiem jak do tego się zabrać. Ma ktoś jakiś pomysł?
toolmaniak
Nie wiem ja czy w ogóle dobrze skumałem o co Ci chodzi, ale jeżeli tak to myśle że ten sposób powinien Ci pomóc.

  1. SELECT * FROM test WHERE datechange BETWEEN '2007-01-01 00:00:00' AND '2007-07-01 00:00:00' ORDER BY datechange ASC;


Po prostu wyrzuci Ci listę posegregowaną według zadanych danych w zestawieniu rosnącym. I nie ważne czy powtarzają się właściwości pół rangeid czy datechange jako default ma ustawione cureent_timestamp i z tej właściwości korzystasz wstawiając date do pól. Mało tego można również jeżeli id ma atrybut auto_increment dawać order po id, bo one również zwiększane są chronologicznie. Można tez zapytanie łączyć z funkcjami np. curdate czy interval;

  1. SELECT * FROM test WHERE datechange BETWEEN (curdate() - interval 27 day) AND curdate() ORDER BY datechange ASC;


Ale zaznaczam nie wiem czy dobrze zrozumiałem twoje pytanie...
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.