Мне нужна помощь с запросом SQL. Вот что мне нужно сделать. Я потерял несколько аспектов, как указано ниже.
У меня есть четыре соответствующие таблицы:
В таблице A указана цена за единицу для всех ресурсов. Я могу посмотреть цену, используя идентификатор ресурса.
Таблица B содержит средства, доступные для данного пользователя.
Таблица C содержит информацию о производстве ресурсов для данного пользователя (включая количество единиц, производимых каждый день).
В таблице D указано количество единиц, когда-либо созданных любым пользователем (может быть идентифицировано по идентификатору пользователя и идентификатору ресурса)
Сказав это, мне нужно запускать пакетное задание по ночам для выполнения следующих действий:
а. для всех пользователей определите, есть ли у них средства, необходимые для производства количества ресурсов, указанного в таблице C, и вычтите средства, если они имеются, из таблицы B (расчет стоимости с использованием таблицы A).
б. запустите процесс для создания ресурсов и после завершения производства ресурсов обновите таблицу D, используя значения из таблицы C после завершения продукта ресурса.
Я полагал, что вторую часть можно выполнить с помощью ОБНОВЛЕНИЯ с подзапросом. Тем не менее, я не уверен, как я должен делать часть а. Я могу думать только об использовании курсора для извлечения каждой строки, изучения и обновления. Есть ли один SQL-оператор, который поможет мне избежать обработки каждой строки вручную? Кроме того, если какие-либо строки не были обновлены, часть b. SQL не должен создавать ресурсы для этого пользователя.
По сути, я пытаюсь изменить SQL, используемый для этой логики, которая в настоящее время находится в хранимой процедуре, на что-то, что будет работать намного быстрее (и не будет обрабатывать каждую строку отдельно).
Пожалуйста, дайте мне знать любые идеи и мысли.
Спасибо! - Азим