Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.04.2016, 16:16   #1
Vladsn07
Новичок
Джуниор
 
Регистрация: 06.04.2016
Сообщений: 1
По умолчанию Простой update

Имеется запрос

Код:
SELECT WorkOrder_Fields.UDF_CHAR1,
CASE
WHEN SUM(CASE
            WHEN WorkstationCI.ATTRIBUTE_5401='Да' THEN 1
            ELSE 0
            END
            )>0 THEN 'Да'
ELSE 'Нет'
END 
 
FROM WorkOrderStates         
        LEFT JOIN WorkOrder ON WorkOrder.WORKORDERID = WorkOrderStates.WORKORDERID   
        LEFT JOIN WorkOrder_Fields ON WorkOrder_Fields.WORKORDERID=WorkOrder.WORKORDERID    
        LEFT JOIN WorkstationCI ON Workorder.CIID = WorkstationCI.CIID
        WHERE  WorkOrderStates.STATUSID <> '3'
        GROUP BY WorkOrder_Fields.UDF_CHAR1

который выводит WorkOrder_Fields.UDF_CHAR1
Необходимо вместо вывода сделать update.
Если так:

Код:
UPDATE WorkOrder_Fields SET UDF_CHAR1=WorkstationCI.ATTRIBUTE_5401  
    FROM WorkOrderStates         
        LEFT JOIN WorkOrder ON WorkOrder.WORKORDERID = WorkOrderStates.WORKORDERID   
        LEFT JOIN WorkOrder_Fields ON WorkOrder_Fields.WORKORDERID=WorkOrder.WORKORDERID    
       LEFT JOIN IT ON IT.WORKORDERID=WorkOrder.WORKORDERID
        LEFT JOIN WorkstationCI ON Workorder.CIID = WorkstationCI.CIID
             WHERE  WorkOrderStates.STATUSID <> '3'

то update проходит, но мне нужен результат да, если имеется хотя бы 1 да, если строк с одинаковым WORKORDERID несколько
Vladsn07 вне форума Ответить с цитированием
Старый 08.04.2016, 07:28   #2
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Цитата:
Необходимо вместо вывода сделать update.
и UPDATE тоже можно применять выражение CASE . Смотрите пример
Код:
create Database TestDB;
----
use TestDB;
-----
create table CASETable (id int identity(1,1),
                        name nvarchar(30),
                        Price money )
                        
------------------------------------
insert into CASETable values (N'Пива',  50)
insert into CASETable values (N'Чай',   55)
insert into CASETable values (N'Кофе',  70)
insert into CASETable values (N'Хлеб',  100)
-----------------------------------
select * 
from CASETable
--DELETE FROM CASETable

----------------UPDATE  выражение CASE 

UPDATE CASETable SET Price = CASE 
                 WHEN Price = 50  THEN Price+Price/100*10
                 WHEN Price > 50 THEN  Price+Price /100*2
                 END
select * 
from CASETable
Цитата:
если имеется хотя бы 1 да, если строк с одинаковым WORKORDERID несколько
Что имеется ? Покажите "реальный пример" что было понятно что у вас там

Последний раз редактировалось xxbesoxx; 08.04.2016 в 07:47.
xxbesoxx вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Update Constellation SQL, базы данных 5 18.12.2014 09:01
Update Diana528 Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate) 5 13.04.2014 15:38
update Margana PHP 1 01.05.2011 19:55
Update usmesn PHP 3 02.06.2010 17:23
update shad0w SQL, базы данных 3 27.10.2009 11:44