Size: a a a

SqlCom.ru - Стиль жизни SQL

2020 November 19

GS

Groshev Seva in SqlCom.ru - Стиль жизни SQL
Привет народ, возник вопрос по функции POWER (возведение в степень). Я могу засовывать в нее переменные? И если да то как это делать, потому что у меня ничего не робит(
источник

IZ

Ilia Zviagin in SqlCom.ru - Стиль жизни SQL
Евгений
а как тогда правильно?
Это долго объяснять.
источник

IZ

Ilia Zviagin in SqlCom.ru - Стиль жизни SQL
Groshev Seva
Привет народ, возник вопрос по функции POWER (возведение в степень). Я могу засовывать в нее переменные? И если да то как это делать, потому что у меня ничего не робит(
Что хочешь можешь засовывать.
источник

IZ

Ilia Zviagin in SqlCom.ru - Стиль жизни SQL
Groshev Seva
Привет народ, возник вопрос по функции POWER (возведение в степень). Я могу засовывать в нее переменные? И если да то как это делать, потому что у меня ничего не робит(
Где ты этот код пишешь?
источник

GS

Groshev Seva in SqlCom.ru - Стиль жизни SQL
В триггере
источник

GS

Groshev Seva in SqlCom.ru - Стиль жизни SQL
DECLARE @A TABLE (emp_id INT,X INT)
INSERT INTO @A
SELECT t1.employee_id, (t1.counts - TRIG_LOG.is_increased + (TRIG_LOG.is_increased % 3))/3
 FROM (Select ReportEmployee.employee_id, COUNT (*) as counts FROM ReportEmployee
 JOIN Report ON ReportEmployee.report_id = Report.report_id
 JOIN Events ON Events.event_id = Report.event_id
 JOIN Employee ON Employee.employee_id = ReportEmployee.employee_id
 JOIN EmployeeJob ON EmployeeJob.employee_id = Employee.employee_id
 JOIN Jobs ON Jobs.job_id = EmployeeJob.job_id
 WHERE Events.danger_lvl >= 3 AND Jobs.job = 'репортёр'
 GROUP BY ReportEmployee.employee_id)t1 LEFT JOIN TRIG_LOG on t1.employee_id = TRIG_LOG.emp_id

 DECLARE @M FLOAT
 SET @M = CAST ((SELECT X FROM @A AS T
 JOIN EmployeeJob ON EmployeeJob.employee_id = T.emp_id
 WHERE T.emp_id = EmployeeJob.employee_id
 ) AS FLOAT)
 
 UPDATE EmployeeJob SET EmployeeJob.salary =
 CAST (CAST (EmployeeJob.salary AS FLOAT) * POWER(1.4, @M) AS INT)
 WHERE EmployeeJob.employee_id IN (SELECT emp_id FROM @A)
источник

GS

Groshev Seva in SqlCom.ru - Стиль жизни SQL
вот часть кода в котром используется
источник

IZ

Ilia Zviagin in SqlCom.ru - Стиль жизни SQL
Groshev Seva
DECLARE @A TABLE (emp_id INT,X INT)
INSERT INTO @A
SELECT t1.employee_id, (t1.counts - TRIG_LOG.is_increased + (TRIG_LOG.is_increased % 3))/3
 FROM (Select ReportEmployee.employee_id, COUNT (*) as counts FROM ReportEmployee
 JOIN Report ON ReportEmployee.report_id = Report.report_id
 JOIN Events ON Events.event_id = Report.event_id
 JOIN Employee ON Employee.employee_id = ReportEmployee.employee_id
 JOIN EmployeeJob ON EmployeeJob.employee_id = Employee.employee_id
 JOIN Jobs ON Jobs.job_id = EmployeeJob.job_id
 WHERE Events.danger_lvl >= 3 AND Jobs.job = 'репортёр'
 GROUP BY ReportEmployee.employee_id)t1 LEFT JOIN TRIG_LOG on t1.employee_id = TRIG_LOG.emp_id

 DECLARE @M FLOAT
 SET @M = CAST ((SELECT X FROM @A AS T
 JOIN EmployeeJob ON EmployeeJob.employee_id = T.emp_id
 WHERE T.emp_id = EmployeeJob.employee_id
 ) AS FLOAT)
 
 UPDATE EmployeeJob SET EmployeeJob.salary =
 CAST (CAST (EmployeeJob.salary AS FLOAT) * POWER(1.4, @M) AS INT)
 WHERE EmployeeJob.employee_id IN (SELECT emp_id FROM @A)
Да, можно.
источник

O

Oleg T in SqlCom.ru - Стиль жизни SQL
Konstantin Taranov
ничего себе какой зверь попался https://dotmimsync.readthedocs.io/Overview.html
AlwaysON с поддержкой других баз данных, кто-либо пробовал?
Это не решение высокой доступности, потому AlwaysOn это называть не стоит. Похожую функциональность реализует oracle goldengate и гетерогенная репликация в mssql, а также ssis с нужными провайдерами. Код процедур - да, это интересное решение. Но вопрос один - зачем?  Кому нужна подобная гетерогенность в ущерб гибкости и производительности? Любой ОРМ генерит код на два порядка хуже, чем человек разработчик слоя данных.
источник

GS

Groshev Seva in SqlCom.ru - Стиль жизни SQL
Ilia Zviagin
Да, можно.
он мне пишет, что нельзя записать  NULL,  то есть функция выдает NULL
источник

GS

Groshev Seva in SqlCom.ru - Стиль жизни SQL
а значит неправильно работает
источник

GS

Groshev Seva in SqlCom.ru - Стиль жизни SQL
или не в этом проблема?
источник

O

Oleg T in SqlCom.ru - Стиль жизни SQL
Groshev Seva
он мне пишет, что нельзя записать  NULL,  то есть функция выдает NULL
Посмотри что выводит запрос, который наполняет таблицу А, затем, тот, что наполняет переменную М
источник

GS

Groshev Seva in SqlCom.ru - Стиль жизни SQL
Oleg T
Посмотри что выводит запрос, который наполняет таблицу А, затем, тот, что наполняет переменную М
О точно, он ставит @M NULL. Спасибо большое
источник

IZ

Ilia Zviagin in SqlCom.ru - Стиль жизни SQL
Groshev Seva
он мне пишет, что нельзя записать  NULL,  то есть функция выдает NULL
ну как бы наверное она права, ни основание ни степень не могут быть NULL — это как-то нехорошо.
источник

IZ

Ilia Zviagin in SqlCom.ru - Стиль жизни SQL
Евгений
а как тогда правильно?
Это нет смысла объяснять. Я если сделаю это задание за тебя, ты потом всё равно работать не сможешь.
Смысла ноль
источник

АА

Андрей Агеев... in SqlCom.ru - Стиль жизни SQL
Oleg T
Это не решение высокой доступности, потому AlwaysOn это называть не стоит. Похожую функциональность реализует oracle goldengate и гетерогенная репликация в mssql, а также ssis с нужными провайдерами. Код процедур - да, это интересное решение. Но вопрос один - зачем?  Кому нужна подобная гетерогенность в ущерб гибкости и производительности? Любой ОРМ генерит код на два порядка хуже, чем человек разработчик слоя данных.
Еще шины данных в совокупности с CDC коннекторами могут нечто подобное реализовывать. Встречалось где-то (mule, kafka).
источник

O

Oleg T in SqlCom.ru - Стиль жизни SQL
Андрей Агеев
Еще шины данных в совокупности с CDC коннекторами могут нечто подобное реализовывать. Встречалось где-то (mule, kafka).
Ага, именно. И ценность их именно для перекачки массивов данных в основном между oltp и olap системами.
источник

MC

Max Chistyakov in SqlCom.ru - Стиль жизни SQL
Ilia Zviagin
А ты создавал их в правильном порядке, чтоб оно всё это запомнило?
хм, сложно сказать. БД уже 10 лет существует
источник

O

Oleg T in SqlCom.ru - Стиль жизни SQL
Max Chistyakov
хм, сложно сказать. БД уже 10 лет существует
Это была ирония. Не может СУБД так. Данные удалять каскадно - умеет, если разрешить, но элементы физического и логического дизайна каскадно не удаляются.
источник