Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 SET return more than 1 value  [new]
danzik
Member

Откуда:
Сообщений: 4
Вообщем задача:
table 1 many-to-one to table1
u
pdate table1 set column2 = (select name
	from table2, table1 where table1.id = table2.id)

возвращает больше одного значение.
вообщем мне нужно все значения, которые в подзапросе установить в column2
как такое реализовать?
5 июн 15, 23:20    [17738600]     Ответить | Цитировать Сообщить модератору
 Re: SET return more than 1 value  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
https://www.sql.ru/faq/faq_topic.aspx?fid=731
5 июн 15, 23:21    [17738602]     Ответить | Цитировать Сообщить модератору
 Re: SET return more than 1 value  [new]
danzik
Member

Откуда:
Сообщений: 4
Гавриленко Сергей Алексеевич
https://www.sql.ru/faq/faq_topic.aspx?fid=731
и что это дает? ответ так и не получил
5 июн 15, 23:39    [17738659]     Ответить | Цитировать Сообщить модератору
 Re: SET return more than 1 value  [new]
Гавриленко Сергей Алексеевич
Member

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

Там написано, что это дает. Русскими буквами даже.
6 июн 15, 00:00    [17738765]     Ответить | Цитировать Сообщить модератору
 Re: SET return more than 1 value  [new]
o-o
Guest
вроде как ему надо проапдейтить весь table2.column2
соответствующими name из table1, соединив их по id.

UPDATE (Transact-SQL)
раздел Updating Data Based on Data From Other Tables

еще у вас так и неясно, у которой из таблиц many, у кого one.
читайте оба примера, а то если это у той, из к-ой берем новые значения many, то с join-ом пролетите
6 июн 15, 00:30    [17738851]     Ответить | Цитировать Сообщить модератору
 Re: SET return more than 1 value  [new]
danzik
Member

Откуда:
Сообщений: 4
Гавриленко Сергей Алексеевич,

не увидел я смысла, в той ссылке, которую Вы дали. Каким образом она решает мою задачу? Вам сама постановка вообще ясна?
6 июн 15, 10:01    [17739186]     Ответить | Цитировать Сообщить модератору
 Re: SET return more than 1 value  [new]
invm
Member

Откуда: Москва
Сообщений: 9845
danzik
вообщем мне нужно все значения, которые в подзапросе установить в column2
как такое реализовать?
Значения в столбцах могут быть только скалярными.
Поэтому вам и предложили сформировать список эти значений и хранить их как строку.
Если не устраивает - формируйте XML и храните его.
Если и это не устраивает - ищите другую СУБД, удовлетворяющую вашим потребностям.
6 июн 15, 11:16    [17739267]     Ответить | Цитировать Сообщить модератору
 Re: SET return more than 1 value  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31990
danzik
Вам сама постановка вообще ясна?
Судя по комментариям, постановка не ясна:
danzik
вообщем мне нужно все значения, которые в подзапросе установить в column2
Народ думает, что вам нужно в одну запись, в одно поле column2 положить целую таблицу.
Это так?

Я вообще думаю, что вам нужно обновить записи в таблице table1 соответствующими записями из таблицы table2

Но у вас это не получается, потому что соответствие неоднозначное, одной записи из table1 соответствует много записей из table2, но вы об этом даже не подозреваете.
Поэтому нужно либо добавить в ваш подзапрос TOP 1, либо, что лучше, освоить нормальную форму команды UPDATE с использованием JOIN (пример в документации: команда UPDATE, раздел примеров Specifying Target Objects Other Than Standard Tables, пример B. Specifying a table alias as the target object)
6 июн 15, 12:08    [17739368]     Ответить | Цитировать Сообщить модератору
 Re: SET return more than 1 value  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
danzik
Гавриленко Сергей Алексеевич,

не увидел я смысла, в той ссылке, которую Вы дали. Каким образом она решает мою задачу? Вам сама постановка вообще ясна?


вообще-то это вопрос к вам.
Приведите пример, как вы представляете себе вашу задачу.
6 июн 15, 12:14    [17739373]     Ответить | Цитировать Сообщить модератору
 Re: SET return more than 1 value  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
danzik
Гавриленко Сергей Алексеевич,

не увидел я смысла, в той ссылке, которую Вы дали. Каким образом она решает мою задачу? Вам сама постановка вообще ясна?
Мне ясно, что она даже вам нифига не ясна, куда уж нам. Хотите результатов - соизвольте выполнить пункты 4 и 6.
6 июн 15, 15:23    [17739741]     Ответить | Цитировать Сообщить модератору
 Re: SET return more than 1 value  [new]
danzik
Member

Откуда:
Сообщений: 4
alexeyvg
Я вообще думаю, что вам нужно обновить записи в таблице table1 соответствующими записями из таблицы table2

Но у вас это не получается, потому что соответствие неоднозначное
абсолютно верно.
У меня есть новый столбец в таблице, мне нужно заполнить его данными из другой таблицы, но у меня не получается это реализовать, так как set возвращает больше 1 значения. Отношения между таблицами 1ко многим.
еще раз, более понятнее, я не точно сформулировал постановку задачи и многие не понимают, что я хочу

update table1 set table1.column2 = (select name
	from table2, table1 where table1.id = table2.id) table1.id=table2.id - соответствуют больше, чем 1 значение, отсюда и не ясность
как добавить в новый столбец значения name из table2 и добавить соответствующие значения в table1.column2, где table1.foreign_key_id=table2.id


table 2 one-to-many к table1. Надеюсь сейчас более понятнее стало, спасибо.
7 июн 15, 11:34    [17741366]     Ответить | Цитировать Сообщить модератору
 Re: SET return more than 1 value  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
update table1 set table1.column2 = (select top 1 name
from table2, table1 where table1.id = table2.id) WHERE table1.id=table2.id


странно, что у вас внутренний запрос дает не 1 запись, значит в table2 есть много записей с одинаковым id?

select name from table2, table1 where table1.id = table2.id
7 июн 15, 11:59    [17741400]     Ответить | Цитировать Сообщить модератору
 Re: SET return more than 1 value  [new]
ЦБ
Member [заблокирован]

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

это, чтоле?
update table1 
set table1.column2 = table2.name
from table2 inner join table1 on table1.id = table2.id


пс
и почитай "рекомендации", то куда тут отправили 17739741
не умеешь ты словами свои мысли выражать, так покажи на примере !
7 июн 15, 11:59    [17741401]     Ответить | Цитировать Сообщить модератору
 Re: SET return more than 1 value  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Winnipuh
update table1 set table1.column2 = (select top 1 name
from table2, table1 where table1.id = table2.id) WHERE table1.id=table2.id


странно, что у вас внутренний запрос дает не 1 запись, значит в table2 есть много записей с одинаковым id?

select name from table2, table1 where table1.id = table2.id


зы. я только ваш запрос исправил.
7 июн 15, 12:00    [17741403]     Ответить | Цитировать Сообщить модератору
 Re: SET return more than 1 value  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31990
danzik
У меня есть новый столбец в таблице, мне нужно заполнить его данными из другой таблицы, но у меня не получается это реализовать, так как set возвращает больше 1 значения. Отношения между таблицами 1ко многим.
еще раз, более понятнее, я не точно сформулировал постановку задачи и многие не понимают, что я хочу

update table1 set table1.column2 = (select name
	from table2, table1 where table1.id = table2.id) table1.id=table2.id - соответствуют больше, чем 1 значение, отсюда и не ясность
как добавить в новый столбец значения name из table2 и добавить соответствующие значения в table1.column2, где table1.foreign_key_id=table2.id



table 2 one-to-many к table1. Надеюсь сейчас более понятнее стало, спасибо.
Ну, если "Отношения между таблицами 1 ко многим", то это как раз вы должны решить (спросить у постановщика задачи), что нужно сделать.

Если одному ID=1 в таблице table2 соответсуют 2 записи, с name = {"вася", "петя"}, то какое значение в записи ID=1 в таблице table1 нужно присвоить полю name?

Не надо писать код, формулируйте и фиксируйте сначала постановку задачи на русском языке, код написать - самое простое.
7 июн 15, 13:55    [17741605]     Ответить | Цитировать Сообщить модератору
 Re: SET return more than 1 value  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
alexeyvg
danzik
У меня есть новый столбец в таблице, мне нужно заполнить его данными из другой таблицы, но у меня не получается это реализовать, так как set возвращает больше 1 значения. Отношения между таблицами 1ко многим.
еще раз, более понятнее, я не точно сформулировал постановку задачи и многие не понимают, что я хочу

update table1 set table1.column2 = (select name
	from table2, table1 where table1.id = table2.id) table1.id=table2.id - соответствуют больше, чем 1 значение, отсюда и не ясность
как добавить в новый столбец значения name из table2 и добавить соответствующие значения в table1.column2, где table1.foreign_key_id=table2.id



table 2 one-to-many к table1. Надеюсь сейчас более понятнее стало, спасибо.
Ну, если "Отношения между таблицами 1 ко многим", то это как раз вы должны решить (спросить у постановщика задачи), что нужно сделать.

Если одному ID=1 в таблице table2 соответсуют 2 записи, с name = {"вася", "петя"}, то какое значение в записи ID=1 в таблице table1 нужно присвоить полю name?

Не надо писать код, формулируйте и фиксируйте сначала постановку задачи на русском языке, код написать - самое простое.


не, ну если и там, и там вася, тогда еще куда-ни шло
7 июн 15, 14:05    [17741625]     Ответить | Цитировать Сообщить модератору
 Re: SET return more than 1 value  [new]
Okmor
Member

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

Дорогой и хороший программист формулирует задачу и отдаёт её на фриланс ибо так дешевле.
7 июн 15, 21:08    [17742376]     Ответить | Цитировать Сообщить модератору
 Re: SET return more than 1 value  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31990
Okmor
Winnipuh,

Дорогой и хороший программист формулирует задачу и отдаёт её на фриланс ибо так дешевле.
Да-да, а фрилинсер ковыряет костыли по ответам на нашем форуме :-)
8 июн 15, 01:18    [17742765]     Ответить | Цитировать Сообщить модератору
 Re: SET return more than 1 value  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
alexeyvg
Okmor
Winnipuh,

Дорогой и хороший программист формулирует задачу и отдаёт её на фриланс ибо так дешевле.
Да-да, а фрилинсер ковыряет костыли по ответам на нашем форуме :-)


+
при этом слабо понимая, что нужно сделать.

И, кстати, это может быть и дорогой, но не хороший программист, который таким фрилансерам отдает задачи,
будет дёшево, но с головняками.
8 июн 15, 07:52    [17742909]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить