Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Помогите с UPDATE (число прочтений - 1662 )
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Помогите с UPDATE
13. Мая 2009 :: 06:38
Печать  
Есть селект:
Код
Выбрать все
SELECT [РекЗначения].[Значение]
FROM [РекЗначения]
INNER JOIN  [Объекты] ON [Объекты].[ПолныйИД] = [РекЗначения].[ИдОбъекта]
INNER JOIN  [Типы] ON [Типы].[ИД] = [Объекты].[ТипВид]
INNER JOIN  [РекТипы] ON [РекТипы].[ИдРеквизита] = [РекЗначения].[ИдРеквизита]
WHERE Типы.Тип='Справочник' and (Типы.Вид='ДоговораСтрахования' OR Типы.Вид='Контрагенты')
	AND ([РекТипы].[ИмяРеквизита]='Код' OR [РекТипы].[ИмяРеквизита]='_ПолныйКод') 


Не пойму как из этого сделать UPDATE  "[РекЗначения].[Значение]" Печаль
База - SQLite. На всякий пожарный синтаксис этой команды: http://sqlite.org/lang_update.html
Добавлять новые поля в таблицу РекЗначения - нельзя
  
Наверх
 
IP записан
 
alexdd
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 347
Зарегистрирован: 25. Июня 2007
Re: Помогите с UPDATE
Ответ #1 - 13. Мая 2009 :: 09:01
Печать  
Не разбираюсь в SQLLite:( А обычный синтаксис не подходит?
Код
Выбрать все
UPDATE [РекЗначения]
 SET [РекЗначения].[Значение] = <Какое-то значение>
FROM [РекЗначения]
INNER JOIN  [Объекты] ON [Объекты].[ПолныйИД] = [РекЗначения].[ИдОбъекта]
INNER JOIN  [Типы] ON [Типы].[ИД] = [Объекты].[ТипВид]
INNER JOIN  [РекТипы] ON [РекТипы].[ИдРеквизита] = [РекЗначения].[ИдРеквизита]
WHERE Типы.Тип='Справочник' and (Типы.Вид='ДоговораСтрахования' OR Типы.Вид='Контрагенты')
	AND ([РекТипы].[ИмяРеквизита]='Код' OR [РекТипы].[ИмяРеквизита]='_ПолныйКод')  


  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Помогите с UPDATE
Ответ #2 - 13. Мая 2009 :: 09:11
Печать  
Нет, к сожалению такое там не прокатит. Там жестко "UPDATE имя_таблицы SET реквизит=значение WHERE условие".
Вот структура базы:
  

StructTable.jpg ( 24 KB | Загрузки )
StructTable.jpg
Наверх
 
IP записан
 
alexdd
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 347
Зарегистрирован: 25. Июня 2007
Re: Помогите с UPDATE
Ответ #3 - 13. Мая 2009 :: 10:16
Печать  
Откопал потрепанную книжку по SQL 90го годаУлыбка Может так как-то
Код
Выбрать все
Update [РекЗначения]
SET [Значение] = <Какое-то значение>
where
 exists(
  SELECT *
  FROM  [Объекты]
  INNER JOIN  [Типы] ON [Типы].[ИД] = [Объекты].[ТипВид]
  INNER JOIN  [РекТипы] ON [РекТипы].[ИдРеквизита] = [РекЗначения].[ИдРеквизита]
  WHERE
    [Объекты].[ПолныйИД] = [РекЗначения].[ИдОбъекта] and
    Типы.Тип='Справочник' and (Типы.Вид='ДоговораСтрахования' OR Типы.Вид='Контрагенты')
	AND ([РекТипы].[ИмяРеквизита]='Код' OR [РекТипы].[ИмяРеквизита]='_ПолныйКод')
    ) 


  
Наверх
 
IP записан
 
alexdd
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 347
Зарегистрирован: 25. Июня 2007
Re: Помогите с UPDATE
Ответ #4 - 13. Мая 2009 :: 10:27
Печать  
сори, неправильноПечаль как-то так наверно
Код
Выбрать все
Update [РекЗначения]
SET [Значение] = <Какое-то значение>
where
 exists(
  SELECT *
  FROM  [Объекты]
  INNER JOIN  [Типы] ON [Типы].[ИД] = [Объекты].[ТипВид]
  WHERE
    [Объекты].[ПолныйИД] = [РекЗначения].[ИдОбъекта] and
    Типы.Тип='Справочник' and (Типы.Вид='ДоговораСтрахования' OR Типы.Вид='Контрагенты')
    ) and
 exists(
  select *
  from
  [РекТипы]
  where
   [РекТипы].[ИдРеквизита] = [РекЗначения].[ИдРеквизита] and
   ([РекТипы].[ИмяРеквизита]='Код' OR [РекТипы].[ИмяРеквизита]='_ПолныйКод')
  ) 


  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Помогите с UPDATE
Ответ #5 - 13. Мая 2009 :: 10:33
Печать  
Спасибо, идею понял. Пойду пробывать.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать