Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL] zapytanie ostatnie wydarzenie
Forum PHP.pl > Forum > Bazy danych > MySQL
JaKo
Witam, mam problem w dobraniu poprawnego zapytania wybierającego ostatnie wydarzenie z danego miesiąca. Kolumny są następujące: day, month i year. Próbowałem tak:

  1. SELECT *
  2. FROM calendar WHERE (`month` = '$month' || `month` = '*') AND (`year` <= '$year' || `year` = '*') AND `day` < '$day'
  3. ORDER BY `year`, `month`, `day` DESC LIMIT 0, 50


Ale zapytanie nie działa tak jak chce. Dla wyjaśnienia: * oznacza corocznie/comiesięcznie, zmienne to dane na dziś.
1) zapytanie źle sortuje wyniki: chce, żeby wyświetlało posortowane najpierw przez rok, poźniej miesiąc, później dzień malejąco, a ono wyświetla jak chce - jeżeli dobrze by sortowało wystarczy dodać LIMIT 1 i mamy ostatnie wydarzenie,
2) nie dodaję limitu, a ono wyświetla tylko jedno wydarzenie, choć dodanych jest kilka na dany miesiąc, czyli coś jest nie tak.

Jeżeli ktoś zauważył, gdzie wkradł się błąd, albo zna lepsze rozwiązanie tego problemu - proszę o odpowiedź.
Z góry dzięki, JaKo.
Sławo
Hmm nie wiem czy to będzie dobre ale błąd wkradł się wg mnie w zapytaniu o dzień

  1. SELECT *
  2. FROM calendar WHERE (`year` <= '$year' || `year` = '*') AND (`month` <= '$month' || `month` = '*') AND (`day` <= '$day' || `day` = '*')
  3. ORDER BY `year`, `month`, `day` DESC LIMIT 1
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.