Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Странно работающий update  [new]
MariLu
Member

Откуда:
Сообщений: 18
Работаю в MS SQL SMS. При выполнении update запроса в результатах выполнения пишет, что строки обработаны, все в порядке. Но на самом деле изменения не применяются, где и как искать почему?
17 ноя 14, 12:52    [16857817]     Ответить | Цитировать Сообщить модератору
 Re: Странно работающий update  [new]
Glory
Member

Откуда:
Сообщений: 104751
MariLu
Но на самом деле изменения не применяются, где и как искать почему?

В триггерах

ЗЫ
И не надо один и тот же вопрос задавать в разных темах
17 ноя 14, 12:53    [16857824]     Ответить | Цитировать Сообщить модератору
 Re: Странно работающий update  [new]
MariLu
Member

Откуда:
Сообщений: 18
Ясно, вопросов больше не задавать. Спасибо за помощь
17 ноя 14, 12:57    [16857846]     Ответить | Цитировать Сообщить модератору
 Re: Странно работающий update  [new]
iap
Member

Откуда: Москва
Сообщений: 47144
MariLu
Ясно, вопросов больше не задавать. Спасибо за помощь
Вместо демарша лучше бы выполнили рекомендации по оформлению вопросов на форуме.
17 ноя 14, 12:59    [16857859]     Ответить | Цитировать Сообщить модератору
 Re: Странно работающий update  [new]
Glory
Member

Откуда:
Сообщений: 104751
MariLu
Ясно, вопросов больше не задавать. Спасибо за помощь

Никто не может знать, почему ваш запрос на вашей таблице производит результат, который лично вы считаете неверным.
17 ноя 14, 13:02    [16857871]     Ответить | Цитировать Сообщить модератору
 Re: Странно работающий update  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31983
MariLu
Но на самом деле изменения не применяются, где и как искать почему?
Либо неправильный запрос на обновление, либо нечто другое, что меняет данные (например, триггер или запросы из других коннектов).
17 ноя 14, 13:22    [16858061]     Ответить | Цитировать Сообщить модератору
 Re: Странно работающий update  [new]
iap
Member

Откуда: Москва
Сообщений: 47144
alexeyvg
MariLu
Но на самом деле изменения не применяются, где и как искать почему?
Либо неправильный запрос на обновление, либо нечто другое, что меняет данные (например, триггер или запросы из других коннектов).
Либо триггер INSTEAD OF UPDATE без UPDATE
17 ноя 14, 13:23    [16858073]     Ответить | Цитировать Сообщить модератору
 Re: Странно работающий update  [new]
MariLu
Member

Откуда:
Сообщений: 18
Триггеров нет. Других обращений к таблицам нет. Вроде все просто. Схема используемых таблиц Картинка с другого сайта.
UPDATE [SabjectGroupeInfo] 
   SET SabjectGroupeInfo.[LearningPlanID]=groupeinfo.LearningPlanID
   from [SabjectGroupeInfo] left outer join  TeacherSubjGroup 
  on  TeacherSubjGroup.[SubjectGroupeInfoID]=[SabjectGroupeInfo].[SubjectGroupeInfoID] left outer join groupeinfo
  on TeacherSubjGroup.groupeid = groupeinfo.groupeid
  where groupeinfo.LearningPlanID<>SabjectGroupeInfo.[LearningPlanID]


В результате выполнения запроса сообщение: "(2484 row(s) affected)", но данные не меняются.
Наверное, где-то здесь какая-то глупейшая ошибка. Но знаний не хвататет понять, где именно.
17 ноя 14, 14:23    [16858750]     Ответить | Цитировать Сообщить модератору
 Re: Странно работающий update  [new]
MariLu
Member

Откуда:
Сообщений: 18


К сообщению приложен файл. Размер - 64Kb
17 ноя 14, 14:23    [16858757]     Ответить | Цитировать Сообщить модератору
 Re: Странно работающий update  [new]
Konst_One
Member

Откуда:
Сообщений: 11621
select groupeinfo.LearningPlanID
from [SabjectGroupeInfo] 
        left outer join  TeacherSubjGroup 
               on  TeacherSubjGroup.[SubjectGroupeInfoID]=[SabjectGroupeInfo].[SubjectGroupeInfoID] 
        left outer join groupeinfo 
               on TeacherSubjGroup.groupeid = groupeinfo.groupeid
  where groupeinfo.LearningPlanID<>SabjectGroupeInfo.[LearningPlanID]


и что вернёт этот запрос?
17 ноя 14, 14:25    [16858781]     Ответить | Цитировать Сообщить модератору
 Re: Странно работающий update  [new]
Glory
Member

Откуда:
Сообщений: 104751
MariLu
В результате выполнения запроса сообщение: "(2484 row(s) affected)", но данные не меняются.
Наверное, где-то здесь какая-то глупейшая ошибка. Но знаний не хвататет понять, где именно.

Данные не меняются и данные меняеются не так, как я хочу - это разные вещи.

А вот зачем вы при left outer join groupeinfo запихнули в where groupeinfo.LearningPlanID<>SabjectGroupeInfo.[LearningPlanID] - непонятно
17 ноя 14, 14:27    [16858799]     Ответить | Цитировать Сообщить модератору
 Re: Странно работающий update  [new]
MariLu
Member

Откуда:
Сообщений: 18
Konst_One, он возвращает больше строк, чем обрабатывает update. А вообще он возвращает список ID планов которые должны быть закреплены за группой
17 ноя 14, 14:50    [16859019]     Ответить | Цитировать Сообщить модератору
 Re: Странно работающий update  [new]
Konst_One
Member

Откуда:
Сообщений: 11621
MariLu
Konst_One, он возвращает больше строк, чем обрабатывает update. А вообще он возвращает список ID планов которые должны быть закреплены за группой


ваш запрос собственно и возвращает набор данных, который будет обновляться
17 ноя 14, 14:51    [16859034]     Ответить | Цитировать Сообщить модератору
 Re: Странно работающий update  [new]
MariLu
Member

Откуда:
Сообщений: 18
Glory, Чтобы запрос выбирал ошибочные значения
17 ноя 14, 14:51    [16859042]     Ответить | Цитировать Сообщить модератору
 Re: Странно работающий update  [new]
MariLu
Member

Откуда:
Сообщений: 18
Konst_One, те данные, что он выбирает не обновляются
17 ноя 14, 14:53    [16859061]     Ответить | Цитировать Сообщить модератору
 Re: Странно работающий update  [new]
Glory
Member

Откуда:
Сообщений: 104751
MariLu
Glory, Чтобы запрос выбирал ошибочные значения

Вы понимаете, что ваш where превращает left outer join в inner join ?
Вы понимаете, как происходит сравение NULL значений при groupeinfo.LearningPlanID<>SabjectGroupeInfo.[LearningPlanID] ?
17 ноя 14, 14:54    [16859071]     Ответить | Цитировать Сообщить модератору
 Re: Странно работающий update  [new]
Konst_One
Member

Откуда:
Сообщений: 11621
вы уже смотрели профайлером?
17 ноя 14, 14:54    [16859072]     Ответить | Цитировать Сообщить модератору
 Re: Странно работающий update  [new]
iap
Member

Откуда: Москва
Сообщений: 47144
MariLu,

перепишите хотя бы так:
where not exists(select groupeinfo.LearningPlanID intersect select SabjectGroupeInfo.[LearningPlanID])
Но похоже, что select возвращает много строк для каждой строки из SabjectGroupeInfo, а?
Поэтому их в SELECTе и больше.
17 ноя 14, 14:56    [16859093]     Ответить | Цитировать Сообщить модератору
 Re: Странно работающий update  [new]
MariLu
Member

Откуда:
Сообщений: 18
Кажется я поняла что происходит... Наверное он меняет данные туда сюда... Сча подумаю еще чуть чуть...
17 ноя 14, 14:57    [16859099]     Ответить | Цитировать Сообщить модератору
 Re: Странно работающий update  [new]
Glory
Member

Откуда:
Сообщений: 104751
MariLu
те данные, что он выбирает не обновляются

UPDATE [SabjectGroupeInfo] 
   SET SabjectGroupeInfo.[LearningPlanID]=groupeinfo.LearningPlanID
OUTPUT INSERTED.SubjectGroupeInfoID,
       INSERTED.LearningPlanID,
       DELETED.LearningPlanID,
       TeacherSubjGroup.[SubjectGroupeInfoID],
       groupeinfo.groupeid
   from [SabjectGroupeInfo] 
   left outer join  TeacherSubjGroup on  TeacherSubjGroup.[SubjectGroupeInfoID]=[SabjectGroupeInfo].[SubjectGroupeInfoID] 
   left outer join groupeinfo on TeacherSubjGroup.groupeid = groupeinfo.groupeid
  where groupeinfo.LearningPlanID<>SabjectGroupeInfo.[LearningPlanID]
17 ноя 14, 14:58    [16859109]     Ответить | Цитировать Сообщить модератору
 Re: Странно работающий update  [new]
Glory
Member

Откуда:
Сообщений: 104751
MariLu
Кажется я поняла что происходит... Наверное он меняет данные туда сюда... Сча подумаю еще чуть чуть...

Это запрос возвращает данные ?

SELECT SabjectGroupeInfo.[LearningPlanID], COUNT(*)
   from [SabjectGroupeInfo] left outer join  TeacherSubjGroup 
  on  TeacherSubjGroup.[SubjectGroupeInfoID]=[SabjectGroupeInfo].[SubjectGroupeInfoID] left outer join groupeinfo
  on TeacherSubjGroup.groupeid = groupeinfo.groupeid
  where groupeinfo.LearningPlanID<>SabjectGroupeInfo.[LearningPlanID]
GROUP BY SabjectGroupeInfo.[LearningPlanID] HAVING COUNT(*) > 1
17 ноя 14, 15:04    [16859175]     Ответить | Цитировать Сообщить модератору
 Re: Странно работающий update  [new]
iap
Member

Откуда: Москва
Сообщений: 47144
Что вернёт
SELECT SGI.[LearningPlanID], COUNT(*)
FROM SabjectGroupeInfo SGI
LEFT JOIN TeacherSubjGroup TSG ON SGI.[SubjectGroupeInfoID]=TSG.[SubjectGroupeInfoID]
LEFT JOIN groupeinfo GI ON TSG.[groupeid]=GI.[groupeid]
WHERE NOT EXISTS(SELECT SGI.[LearningPlanID] INTERSECT SELECT GI.[LearningPlanID])
GROUP BY SGI.[LearningPlanID]
HAVING COUNT(*)>1;
??
17 ноя 14, 15:09    [16859221]     Ответить | Цитировать Сообщить модератору
 Re: Странно работающий update  [new]
MariLu
Member

Откуда:
Сообщений: 18
iap,

К сообщению приложен файл. Размер - 63Kb
17 ноя 14, 15:15    [16859282]     Ответить | Цитировать Сообщить модератору
 Re: Странно работающий update  [new]
Glory
Member

Откуда:
Сообщений: 104751
MariLu
iap,

Картинка с другого сайта.

У вас там некоторым записям SabjectGroupeInfo находится по 200 с лишним "новых" значений
Как вы себе представляли правильный update в этих случаях ?
17 ноя 14, 15:17    [16859303]     Ответить | Цитировать Сообщить модератору
 Re: Странно работающий update  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
MariLu,

вы вообще точно уверенны,что картинка правда ? Апдейт не генерит такого оутпута без "помощи" извне
17 ноя 14, 15:18    [16859313]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить