Bardzo specyficzne zapytanie MySQL, które chcę poprawić
Oto mój scenariusz: mam tabelę zawierającą zdarzenia, każde zdarzenie ma pole o nazwie „utworzone” ze znacznikiem czasu, w którym to zdarzenie zostało utworzone. Teraz muszę posortować zdarzenia od najnowszego do najstarszego, ale nie chcę, aby MySQL zwracał je wszystkie. Potrzebuję tylko ostatniego w danym przedziale czasu, na przykład w zakresie 24 godzin (EDYCJA: Chciałbym mieć elastyczne rozwiązanie, nie tylko przez 24 godziny, ale może co kilka godzin). I potrzebuję tylko przez ostatnie 10 dni. Osiągnąłem to, ale jestem pewien, że w najbardziej nieefektywny sposób, to jest coś takiego:
$timestamp = time();
for($i = 0; $i < 10; $i++) {
$query = "SELECT * FROM `eventos` WHERE ... AND `created` < '{$timestamp}' ORDER BY `created` DESC LIMIT 1";
$return = $database->query( $query );
if($database->num( $return ) > 0) {
$event = $database->fetch( $return );
$events[] = $event;
$timestamp = $timestamp - 86400;
}
}
Mam nadzieję, że byłam wystarczająco jasna. Dzięki, Jesús.