у меня есть настройки данных таблицы со столбцами:.Получение True/False Результат от MySql запросов для нескольких значений
id
person
theDate
Каждая строка будет представлять собой фиксирование от person
и дату, когда человек проверяется в каждом Checkin будет быть новой строкой, и никогда не будет более одной проверки в день на человека.
То, что я пытаюсь достичь запрос MySQL, который может сделать следующее:
- Проверьте, чтобы увидеть, если есть строка со вчерашнего дня
WHERE person='BOB' AND theDate=subdate(CURDATE(), 1)
и если есть строка, возвратtrue
, в противном случае, возвратfalse
. - Проверьте, есть ли строка из двух дней назад
WHERE person='BOB' AND theDate=subdate(CURDATE(), 2)
, и если есть строка, вернитеtrue
, в противном случае вернитеfalse
. - Проверьте, есть ли следующая строка с сегодняшнего дня
WHERE person='BOB' AND theDate=CURDATE()
, и если есть строка, вернитеtrue
, в противном случае вернитеfalse
.
Я понимаю, что могу просто сделать три отдельных запроса и сделать подсчет строк и сохранить результат в переменной; однако, я думаю, что это было бы более эффективно для одного запроса.
Требование к булевому также не фиксировано. A 1
вместо true
будет делать то же самое.
Мое предположение было бы сделать следующее, но это явно не работает:
SELECT (SELECT COUNT('id') FROM timecard WHERE theDate = subdate(CURDATE(), 1)) as yesterday, (SELECT COUNT('id') FROM timecard WHERE theDate = subdate(CURDATE(), 2)) as twodays , (SELECT COUNT('id') FROM timecard WHERE theDate = CURDATE()) as today
в то время как это может быть сделано в запросе. имеет смысл поставить всю логику на db –