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

Откуда: Российская Федерация
Сообщений: 105
запрос выше ничего не выводит, но и ошибки нет
22 ноя 14, 01:32    [16888716]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос помогите  [new]
leov
Member

Откуда: С-Петербург
Сообщений: 616
Vladsn07,

а если исполнить тот подзапрос который в скобках?

а что вернет select * from table4 ?
22 ноя 14, 01:34    [16888721]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос помогите  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Модератор: Уважаемый Vladsn07. Рекомендую вести себя несколько скромнее: все-таки это вам нужна помощь от форума, а не форуму от вас. Позиция "не нравится вопрос - гуляй лесом" в свете вышеозвученного прежде всего не выгодна для вас. Рискуете, что все, кто могут вам ответить, таки "прогуляются".
22 ноя 14, 01:37    [16888724]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос помогите  [new]
Vladsn07
Member

Откуда: Российская Федерация
Сообщений: 105
1. записей возвращено: 5 (выполнено: 0 мс; всего: 31 мс)

2. записей возвращено: 5 (выполнено: 0 мс; всего: 47 мс)
22 ноя 14, 01:39    [16888730]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос помогите  [new]
leov
Member

Откуда: С-Петербург
Сообщений: 616
Vladsn07,

нет, нафиг, я умываю руки
вы вообще не понимаете чего хотите
обращайтесь в раздел "работа"
22 ноя 14, 01:45    [16888745]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос помогите  [new]
Vladsn07
Member

Откуда: Российская Федерация
Сообщений: 105
Не понял, почему в первый раз ничего не вышло, но сейчас запрос
select *
from  table4 
join (
  select  inv_number,  table3.inv
  from table1
  left outer join table2 on table2.id=table1.id
  left outer join table3 on table2.wid = table3.wid
)q on q.inv=table4.inv

выдал:

inv inv1 inv_number inv
31 NULL 1001 31
32 NULL 1002 32
33 NULL 1003 33
35 NULL 1005 35
22 ноя 14, 01:45    [16888746]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос помогите  [new]
Vladsn07
Member

Откуда: Российская Федерация
Сообщений: 105
leov
нет, нафиг, я умываю руки
вы вообще не понимаете чего хотите
обращайтесь в раздел "работа"


Что хочу, я прекрасно понимаю, вот имеется запрос
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)

Все прекрасно работает.

Добавляю еще одну промежуточную таблицу, дальше уже не знаю как, вот и все
22 ноя 14, 01:49    [16888752]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос помогите  [new]
leov
Member

Откуда: С-Петербург
Сообщений: 616
ну немного зашевелился, мозгами заскрипел. уже лучше
Vladsn07
Что хочу, я прекрасно понимаю, вот имеется запрос
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)

Все прекрасно работает.

Добавляю еще одну промежуточную таблицу, дальше уже не знаю как, вот и все

вы понимаете что делает этот update?
выполните тот селект что в скобках. какие данные он вернет? вероятно одно число
дак вот во всей таблице table3 полю inv присвоится это значение
понимаете это?
22 ноя 14, 01:56    [16888760]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос помогите  [new]
leov
Member

Откуда: С-Петербург
Сообщений: 616
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)
нет, извиняюсь, просмотрел что вы связывание с обновляемой таблицей в подселект воткнули
не понимаю как оно работает. так обычно не пишут
повторяю - сначала надо написать селект содержащий все таблицы правильно связанные
и только потом из него сделать update
22 ноя 14, 02:05    [16888769]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос помогите  [new]
Vladsn07
Member

Откуда: Российская Федерация
Сообщений: 105
(строк обработано: 5)
table3 после запроса
wid inv
201 1001
301 1002
401 1003
501 1004
601 1005

как то так работает, может не правильно, спорить не буду
А вот table1
id lastname firstname inv_number
1 Иванов Иван 1001
2 Иванов1 Иван2 1002
3 Иванов2 Иван2 1003
4 Петров Петров 1004
5 Петров1 Петров2 1005
22 ноя 14, 02:12    [16888780]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос помогите  [new]
leov
Member

Откуда: С-Петербург
Сообщений: 616
Vladsn07
Не понял, почему в первый раз ничего не вышло, но сейчас запрос
select *
from  table4 
join (
  select  inv_number,  table3.inv
  from table1
  left outer join table2 on table2.id=table1.id
  left outer join table3 on table2.wid = table3.wid
)q on q.inv=table4.inv

выдал:

inv inv1 inv_number inv
31 NULL 1001 31
32 NULL 1002 32
33 NULL 1003 33
35 NULL 1005 35
дак вот в этом результате все правильно связалось?
если правильно то переписываем его
--select *
update table4 set inv1=q.inv_number
from  table4 
join (
  select  inv_number,  table3.inv
  from table1
  left outer join table2 on table2.id=table1.id
  left outer join table3 on table2.wid = table3.wid
)q on q.inv=table4.inv
22 ноя 14, 02:12    [16888782]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос помогите  [new]
Vladsn07
Member

Откуда: Российская Федерация
Сообщений: 105
leov
дак вот во всей таблице table3 полю inv присвоится это значение
понимаете это?


Почему-то не так
22 ноя 14, 02:13    [16888784]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос помогите  [new]
Vladsn07
Member

Откуда: Российская Федерация
Сообщений: 105
Вроде бы отработал, но table4 стала
inv inv1
901 1001
902 1002
903 1003
904 1004
905 NULL

где последний, не понял
22 ноя 14, 02:17    [16888790]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос помогите  [new]
leov
Member

Откуда: С-Петербург
Сообщений: 616
Vladsn07
leov
дак вот во всей таблице table3 полю 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

очень просто переписывается в update
update table3 set inv=table1.inv_number
--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
22 ноя 14, 02:19    [16888792]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос помогите  [new]
leov
Member

Откуда: С-Петербург
Сообщений: 616
Vladsn07
Вроде бы отработал, но table4 стала
inv inv1
901 1001
902 1002
903 1003
904 1004
905 NULL

где последний, не понял
откуда там 905 когда вы писали что там 31-35 должно быть
22 ноя 14, 02:21    [16888798]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос помогите  [new]
Vladsn07
Member

Откуда: Российская Федерация
Сообщений: 105
Не удалось вставить значение NULL в столбец "inv", таблицы "new_db.dbo.test3"; в столбце запрещены значения NULL. Ошибка в UPDATE.
Выполнение данной инструкции было прервано.
22 ноя 14, 02:23    [16888803]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос помогите  [new]
leov
Member

Откуда: С-Петербург
Сообщений: 616
Vladsn07
Не удалось вставить значение NULL в столбец "inv", таблицы "new_db.dbo.test3"; в столбце запрещены значения NULL. Ошибка в UPDATE.
Выполнение данной инструкции было прервано.
закоментарьте update и раскоментарьте select и исполните его. что вернет?
22 ноя 14, 02:24    [16888805]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос помогите  [new]
Vladsn07
Member

Откуда: Российская Федерация
Сообщений: 105
leov

откуда там 905 когда вы писали что там 31-35 должно быть


считайте 31-35 равно 901-905, я удалил таблицу и заново создал, но с такими значениями
22 ноя 14, 02:25    [16888807]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос помогите  [new]
Vladsn07
Member

Откуда: Российская Федерация
Сообщений: 105
id Expr1 wid Expr2 inv_number inv
1 1 201 NULL 1001 NULL
2 2 301 NULL 1002 NULL
3 3 401 NULL 1003 NULL
4 4 501 NULL 1004 NULL
5 5 601 NULL 1005 NULL
NULL NULL NULL 601 NULL 905
NULL NULL NULL 201 NULL 901
NULL NULL NULL 301 NULL 902
NULL NULL NULL 401 NULL 903
NULL NULL NULL 501 NULL 904
22 ноя 14, 02:26    [16888809]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос помогите  [new]
leov
Member

Откуда: С-Петербург
Сообщений: 616
Vladsn07,
вы вот это выполняли?
--select *
update table4 set inv1=q.inv_number
from  table4 
join (
  select  inv_number,  table3.inv
  from table1
  left outer join table2 on table2.id=table1.id
  left outer join table3 on table2.wid = table3.wid
)q on q.inv=table4.inv

раньше оно возвращало
inv inv1 inv_number inv
31 NULL 1001 31
32 NULL 1002 32
33 NULL 1003 33
35 NULL 1005 35
тогда столбец inv_number должен вскочить в inv без проблем
а вы о чем говорите
22 ноя 14, 02:29    [16888813]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос помогите  [new]
Vladsn07
Member

Откуда: Российская Федерация
Сообщений: 105
сейчас это
inv inv1 inv_number inv
901 1001 1001 901
902 1002 1002 902
903 1003 1003 903
904 1004 1004 904
905 1005 1005 905
22 ноя 14, 02:32    [16888818]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос помогите  [new]
leov
Member

Откуда: С-Петербург
Сообщений: 616
Vladsn07,

может у вас скайп есть?
22 ноя 14, 02:34    [16888822]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос помогите  [new]
Vladsn07
Member

Откуда: Российская Федерация
Сообщений: 105
селект выше а table4 дал:

inv inv1
901 1001
902 1002
903 1003
904 1004
905 1005

т.е. то, что надо
22 ноя 14, 02:35    [16888825]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос помогите  [new]
Vladsn07
Member

Откуда: Российская Федерация
Сообщений: 105
leov

может у вас скайп есть?


есть
22 ноя 14, 02:35    [16888826]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос помогите  [new]
leov
Member

Откуда: С-Петербург
Сообщений: 616
я в профиле свою почту показал.
если есть еще вопросы то можете туда свой скайп послать и я позвоню
Vladsn07
leov
может у вас скайп есть?


есть
22 ноя 14, 02:38    [16888828]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить