SQL: хранимая процедура: обновляются все столбцы, а не выбранные в - PullRequest
0 голосов
/ 09 декабря 2018

Я хочу, чтобы только столбцы risico были настроены там, где aantalDeelnames = 1, но код устанавливает их все в 1.

drop procedure if exists VulRisico
go

create procedure VulRisico
as
begin
    update autos
    set risico = 1
    from (select leden.lidnaam, autos.risico, count(deelnemers.evenementnr)as aantalDeelnames
          from leden
          join autos on leden.lidnr = autos.lidnr
          join deelnemers on autos.autonr = deelnemers.autonr
          group by leden.lidnaam, autos.risico) as query
   where query.aantalDeelnames = 1
end

exec VulRisico

1 Ответ

0 голосов
/ 09 декабря 2018

Все строки обновляются, поскольку между autos и запросом нет «связи».

Если вы напишите запрос следующим образом, очевидно, что все (или нет) строки в autos будет обновлено по запросу:

update a
    set risico = 1
    from autos a cross join
         (select l.lidnaam, a.risico, count(*) as aantalDeelnames
          from leden l join
               autos a
               on l.lidnr = a.lidnr join
               deelnemers d
               on a.autonr = d.autonr
           group by l.lidnaam, a.risico
          ) query   
   where query.aantalDeelnames = 1

К сожалению, вы не предоставили объяснение того, чего хотите достичь, или пример данных / желаемых результатов.Это объясняет вашу проблему - и отвечает на этот вопрос.Если вам нужен рабочий запрос, я бы порекомендовал задать другой вопрос с примерами данных, желаемыми результатами и объяснением того, что вы хотите сделать.

...