Проверка условия из другой таблицы при выборке данных.
Имеется база данных, в которой есть 3 таблицы:
1) users
id
key
day_request_limit
...
2) request_log
userid
time тип datetime
...
3) allowed_ip
userid
ip
Нам нужно проверить, есть ли в таблице "users" запись с определенным users.key, а если есть то необходимо проверить два условия. А именно количество записей в таблице request_log для этого userid за текущий день (поле time тип datetime) должно быть меньше чем значение поля users.day_request_limit (это нужно сигнализировать дополнительным полем в результате, например выставить его в значение 1).
И еще надо проверить входит ли IP в список разрешенных ip из таблицы allowed_ip для данного userid (результат так-же нужно отображать установкой еще одного поля результата, например в значение 1)
Проверка первого условия решается следующим запросом:
[sql]
SELECT
users.*,
COUNT(request_log.userid) as current_day_request_count
FROM `users`
LEFT JOIN `request_log` on (users.id = request_log.userid)
WHERE `key` = '***'
AND DATEDIFF(CURRENT_DATE(), IFNULL(request_log.time, CURRENT_DATE())) = 0
GROUP BY request_log.userid
[/sql]
А вот как проверять второе условие я не знаю.
По этому не могли бы вы подсказать, как мне добавить проверку второго условия? Желательно сделать это одним запросом, ну или с использованием подзапросов.
Версия Mysql - 5.0.
Имеется база данных, в которой есть 3 таблицы:
1) users
id
key
day_request_limit
...
2) request_log
userid
time тип datetime
...
3) allowed_ip
userid
ip
Нам нужно проверить, есть ли в таблице "users" запись с определенным users.key, а если есть то необходимо проверить два условия. А именно количество записей в таблице request_log для этого userid за текущий день (поле time тип datetime) должно быть меньше чем значение поля users.day_request_limit (это нужно сигнализировать дополнительным полем в результате, например выставить его в значение 1).
И еще надо проверить входит ли IP в список разрешенных ip из таблицы allowed_ip для данного userid (результат так-же нужно отображать установкой еще одного поля результата, например в значение 1)
Проверка первого условия решается следующим запросом:
[sql]
SELECT
users.*,
COUNT(request_log.userid) as current_day_request_count
FROM `users`
LEFT JOIN `request_log` on (users.id = request_log.userid)
WHERE `key` = '***'
AND DATEDIFF(CURRENT_DATE(), IFNULL(request_log.time, CURRENT_DATE())) = 0
GROUP BY request_log.userid
[/sql]
А вот как проверять второе условие я не знаю.
По этому не могли бы вы подсказать, как мне добавить проверку второго условия? Желательно сделать это одним запросом, ну или с использованием подзапросов.
Версия Mysql - 5.0.