Есть таблица с именем example. В ней 3 поля: name (TEXT), status (TEXT), date (TIMESTAMP).
Нужно извлечь один "name", у когорого status='free' и с минимальной датой.
Вот мой запрос: select name from example where timestamp(date) IN (select timestamp(min(date)) from example) and status = 'free' LIMIT 1;
Проблема: запрос работает до тех пор, пока в таблице не появится name с другим статусом (например status='stop') и у этого name с другим статусом как раз таки будет самая минимальная дата. В таком случае этот запрос ничего не возвращает. То есть, как я понимаю, в этом случае он отбирает минимальную дату, независимо от значения status, а потом смотрит status, он не free и соответственно ничего не возвращается.
Вот мне нужно, чтобы в выборку попал item1, так как у него минимальная дата и статус free. А запрос в этом случае не возвращает ничего, так как минимальная дата у item5 со статусом stop.
Пробовал ещё вот так:
select name from example where timestamp(date) IN (select timestamp(min(DATE)) and status = 'free' from example) and status = 'free' LIMIT 1;
Нужно как-то переписать запрос, чтобы он высчитывал минимальную дату (date) только из строк со статусом free. Если же есть строки с другими статусами, чтобы он их не считал.