Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » SQL запрос

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

Vladsn007

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
имеется 3 таблицы в ms sql
Table1
ID
lastname
firstname
inv_number
 
Table2
ID
WID
 
Table3  
WID
Inv
 
Имеется запрос с выводом данных из этих таблиц
SELECT        table1.id, table2.id AS Expr1, table2.wid, table3.wid AS Expr2, table1.inv_number, table3.inv
FROM            table1 FULL OUTER JOIN
                         table2 ON table1.id = table2.id FULL OUTER JOIN
                         table3 ON table2.wid = table3.wid AND table1.inv_number = table3.inv
 
 
Добавлено:
Вопрос-то забыл написать...  
Как скопировать данные из столбца inv_number table1 в inv table3 по равенствам tabble2?

Всего записей: 108 | Зарегистр. 28-04-2011 | Отправлено: 17:47 19-11-2014
miwa

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vladsn007
Еще используемый SQL-сервер забыл указать.
 
Но вообще, для этого есть merge.

Всего записей: 455 | Зарегистр. 10-10-2004 | Отправлено: 18:52 19-11-2014
Vladsn007

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
я же написал ms sql выше

Всего записей: 108 | Зарегистр. 28-04-2011 | Отправлено: 19:51 19-11-2014
Vladsn007

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Разобрался  
 
UPDATE table3 as a SET  inv =
(select  inv_number  from table1 as b left outer join Table2 as c on b.ID=c.ID  where c.ID =a.ID)
 
Решаю дальше теперь.
Не пойму, если есть еще 1 таблица
 
table4
inv
inv1
 
Как inv_number записать в inv1
 
т.е. есть 2 таблицы связи

Всего записей: 108 | Зарегистр. 28-04-2011 | Отправлено: 18:30 20-11-2014
miwa

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
я же написал ms sql выше

Прошу извинить, был невнимателен.
 
Но все же повторюсь, так как невнимателен не только я. Для того, чтобы
Цитата:
скопировать данные из столбца inv_number table1 в inv table3 по равенствам tabble2
используется оператор merge.  
 
Да, если надо изменить только одно значение, тогда и update с вложенным запросом отлично справится.

Всего записей: 455 | Зарегистр. 10-10-2004 | Отправлено: 23:25 20-11-2014
Vladsn007

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
как быть, если 2 таблицы связи?

Всего записей: 108 | Зарегистр. 28-04-2011 | Отправлено: 07:44 21-11-2014
landy



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Чтобы обновить две таблицы сразу, нужно два оператора update, обернутые в транзакцию.
 
BEGIN TRANSACTION
 
UPDATE Table1
  SET Table1.LastName = 'value1'  
 
UPDATE Table2
SET Table2.WAprrs = 'value2'
 
COMMIT

Всего записей: 576 | Зарегистр. 17-01-2003 | Отправлено: 14:48 25-11-2014 | Исправлено: landy, 14:50 25-11-2014
KRS545

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
merge table3 as t3
using (select t1.inv_number,t2.WID FROM  table1 t1 FULL OUTER JOIN table2 t2 ON t1.id = t2.id)  as s
    on t3.WID=s.WID
when matched then
 update set t3.inv=s.inv_number
when not matched then
 insert (inv)
 values (s.inv_number);
 
только WID должен быть уникальным

Всего записей: 91 | Зарегистр. 12-06-2005 | Отправлено: 15:43 27-11-2014
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » SQL запрос


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru