Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Szczególne zapytanie :)
Forum PHP.pl > Forum > Bazy danych > MySQL
emilton
Witam,

Mam w tabeli mysql rekordy gdzie jedną z kolumn jest pole DATETIME. Potrzebuje zadać takie zapytanie do bazy, które da odpowiedź: dla których godzin danego dnia są rekordy w bazie. Nie ważne ile ich jest, ważne tylko w których godzinach występuja odczyty.

Jakie zadanie ma spełnić uzyskana informacja?
Mam w bazie dane oparte na dacie. Userzy będą mogli wybierać sobie datę i godzinę z kalendarza na stronie www (format godziny to tylko 0,1,2,3 ...23) i chcę zadbać by mogli kliknąć tylko w wybrane daty i godziny (tylko te co do których tyczą się rekordy w bazie).

Problem jest taki że dane chciałbym uzyskać w postaci jak najbardziej zoptymalizowanego (czasowo i pod względem wydajności procesora) zapytania.

Czy ktoś na forum wie jak rozwiązać przedstawiony problem?

Pozdrawiam

emilton
webdice
Tytuł ma opisywać problem. Proszę go poprawić, w innym wypadku temat zamknę.
Crozin
Tak na szybko:
  1. mysql> SELECT * FROM hours;
  2. +----+---------------------+
  3. | id | datetime |
  4. +----+---------------------+
  5. | 1 | 2009-05-12 11:30:45 |
  6. | 2 | 2009-05-12 14:30:45 |
  7. | 3 | 2009-05-12 14:38:45 |
  8. | 4 | 2009-05-12 14:48:45 |
  9. | 5 | 2009-05-12 19:48:45 |
  10. | 6 | 2009-05-13 11:48:45 |
  11. +----+---------------------+
  12. 6 rows IN SET (0.00 sec)
  13.  
  14. mysql> SELECT COUNT(*), HOUR(`datetime`) AS hour FROM hours WHERE DATE(`datetime`) = '2009-05-12' GROUP BY(hour);
  15. +----------+------+
  16. | COUNT(*) | hour |
  17. +----------+------+
  18. | 1 | 11 |
  19. | 3 | 14 |
  20. | 1 | 19 |
  21. +----------+------+
  22. 3 rows IN SET (0.00 sec)
  23.  
  24. mysql>
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.