Страницы

Поиск по вопросам

понедельник, 15 июля 2019 г.

Как правильно составить запрос MySQL


Есть база данных. В ней 2 таблицы "wallets" и "orders". Мне нужно выбрать кошелек из таблицы "wallets" у которого month_limit + сумма которую задал юзер <= 10000, и этот же кошелек нужно проверить в таблице "orders" может быть он уже там лежит и не один раз и ожидает оплаты, взять все строки с этим кошельком из "orders" и их суммы добавить к month_limit + сумма которую задал юзер <= 10000. Посоветуйте как лучше здесь поступить, можно ли это сделать все в одном запросе, или нужно в первом запросе выбрать все кошельки из "wallets" а во втором проверить их наличие в таблице "orders" и проверить значение не больше ли 10000?


Ответ

Если вывести все кошельки где month_limit+$user_sum и при этом показать еще и эту сумму плюс сумму из orders, то:
SELECT w.*, (SELECT w.month_limit + $user_sum + COALESCE(SUM(o.sum_to_buyer),0) FROM orders o WHERE w.idwallets = o.wallets_idwallets ) as total_sum FROM wallets AS w WHERE month_limit + $user_sum <= 10000
Если отобрать, где общая сумма, включая orders, меньше 10к, то немного усложнаем добавляя внешний запрос и проверку на общую сумму:
SELECT * FROM ( SELECT w.*, (SELECT w.month_limit + $user_sum + COALESCE(SUM(o.sum_to_buyer),0) FROM orders o WHERE w.idwallets = o.wallets_idwallets ) as total_sum FROM wallets AS w WHERE month_limit + $user_sum <= 10000 ) A WHERE total_sum<=10000

Комментариев нет:

Отправить комментарий