SQL UPDATE Автоматизация

У меня есть запрос в форме оператора UPDATE. Допустим, это открытая ставка для кампании по электронной почте, в этом примере город - Лондон.

Я хочу запускать этот запрос для 80 городов каждый месяц, и результаты будут представлены в таблице 2018_Cities. Есть ли способ автоматизировать это, чтобы мне не приходилось набирать все города каждый месяц?

Не чувствуйте себя обязанным предоставлять код, вы можете просто указать мне направление процесса, если хотите, и я могу исследовать, но я изо всех сил пытаюсь найти слова, чтобы спросить Google!

UPDATE 2018_Cities SET openRate = (
SELECT ROUND((
SELECT (
SELECT COALESCE( SUM(opens),0) 
FROM 0118
WHERE siteshort 
IN('London')) + (
SELECT COALESCE( SUM(opens),0) 
FROM 0218
WHERE siteshort 
IN('London')) 
as result) / 
(SELECT (
SELECT COALESCE( SUM(recipients),0) 
FROM 0118
WHERE siteshort 
IN('London')) + (
SELECT COALESCE( SUM(recipients),0) 
FROM 0218
WHERE siteshort 
IN('London')) 
as result) * 100, 1)) WHERE siteshort = ('London');

«Выполнить этот запрос» на самом деле никому не помогает понять, что вы пытаетесь сделать.

Gordon Linoff 13.03.2018 13:07
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
1
1
38
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Предположительно, вам нужно что-то вроде этого:

UPDATE 2018_Cities c JOIN
       (SELECT siteshort, SUM(opens) / NULLIF(SUM(RECIPIENTS), 0) as new_openrate
        FROM `0118` t
        GROUP BY siteshort
       ) t
       ON c.siteshort = t.siteshort
    SET c.openRate = new_openrate;

Вашей логике довольно сложно следовать, но идея та же. Напишите подзапрос для выполнения вычислений. Затем используйте JOIN, чтобы ввести новые значения.

Обратите внимание, что 0118 - нелепое название таблицы. Вы должны исправить имена в своей модели данных.

Спасибо, Гордон, я думаю, это та тема, которая мне нужна, и я рассмотрю возможность использования JOIN в этом случае.

Jamie Hall 13.03.2018 13:31

Другие вопросы по теме