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

Откуда:
Сообщений: 15
Всем привет.
Такая проблема, и никак не пойму каким образом ее решить.
Есть 3 таблицы(прикрепил картинку)
Хочу чтобы в таблицу Мастер в поле зарплата_за_месяц прибавлялось число из таблицы Заказы поля Стоимость. То есть при добавлении нового заказа вся стоимость летит в зарплату мастера который выполняет этот заказ. Но Мастер связан с Заказами через Запись и что-то тут я запутался. Направьте меня в нужное русло пожалуйста. Спасибо. Я делал вот так, но вылетает ошибка, что возвращается больше одного значения.

Update Мастер
Set зарплата_за_месяц = (зарплата_за_месяц + (Select Стоимость From Заказы))
Where Паспортные_данные = (Select Мастер From Запись)

К сообщению приложен файл. Размер - 35Kb
18 ноя 14, 12:37    [16864624]     Ответить | Цитировать Сообщить модератору
 Re: Присвоение значения  [new]
Glory
Member

Откуда:
Сообщений: 104751
Albertos
Я делал вот так, но вылетает ошибка, что возвращается больше одного значения.

Потому что (Select Стоимость From Заказы) возвращает все записи таблицы Заказы.
И (Select Мастер From Запись) - тоже

Начните с написания запроса, который просто сначала выберет нужные данные
18 ноя 14, 12:40    [16864642]     Ответить | Цитировать Сообщить модератору
 Re: Присвоение значения  [new]
Albertos
Member

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

Снова здравствуйте. А в sql используется что-то вроде цикла For ну чтобы для каждого мастера вот так пройтись или какая другая конструкция?
18 ноя 14, 12:43    [16864669]     Ответить | Цитировать Сообщить модератору
 Re: Присвоение значения  [new]
Glory
Member

Откуда:
Сообщений: 104751
Albertos
А в sql используется что-то вроде цикла For ну чтобы для каждого мастера вот так пройтись или какая другая конструкция?

Цикл в sql называется SELECT
18 ноя 14, 12:44    [16864675]     Ответить | Цитировать Сообщить модератору
 Re: Присвоение значения  [new]
Albertos
Member

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

Ну вот так работает, только это из за того что я выбрал конкретного мастера с кабинетом номер 200,

Update Мастер
Set зарплата_за_месяц = (зарплата_за_месяц + (Select Стоимость From Заказы where Запись = '1'))
Where Кабинет = '200'

а как быть чтобы по всем мастера пройтись?
18 ноя 14, 12:52    [16864734]     Ответить | Цитировать Сообщить модератору
 Re: Присвоение значения  [new]
nizamovich
Member

Откуда: Москва
Сообщений: 116
Albertos,



Вам надо написать запрос с соединением трех таблиц.
Сначала попробуйте просто написать

запрос с соединением всех трех таблиц , чтобы не было повторений,
то есть надо чтобы было взаимнооднозначное соответствие.

select *
from Мастер
join Заказы ON условие соединения
join Запись ON условие соединения

если получилось , то

update Мастер
Set зарплата_за_месяц = ...
from Мастер
join Заказы ON условие соединения
join Запись ON условие соединения
18 ноя 14, 12:53    [16864740]     Ответить | Цитировать Сообщить модератору
 Re: Присвоение значения  [new]
Glory
Member

Откуда:
Сообщений: 104751
Albertos
а как быть чтобы по всем мастера пройтись?

Еще раз.
Напишите сначала запрос, который выберет все нужные данные
http://www.firststeps.ru/sql/sql1.html
http://technet.microsoft.com/ru-ru/library/ms191517(v=sql.105).aspx
18 ноя 14, 12:54    [16864757]     Ответить | Цитировать Сообщить модератору
 Re: Присвоение значения  [new]
_djХомяГ
Guest
Выполнить update по всей таблице Мастер (возможно предварительно поджойнив необходимые таблицы)
Ну и если не уверены лучше предварительно выполнить

begin tran

update мастер
select * from мастер ----убедиться что все OK

rollback tran
18 ноя 14, 12:55    [16864763]     Ответить | Цитировать Сообщить модератору
 Re: Присвоение значения  [new]
nizamovich
Member

Откуда: Москва
Сообщений: 116
Albertos,

почитайте про Джоины тут
18 ноя 14, 12:57    [16864772]     Ответить | Цитировать Сообщить модератору
 Re: Присвоение значения  [new]
Albertos
Member

Откуда:
Сообщений: 15
Всем спасибо, буду пытаться. Отпишусь как что. Спасибо!!
18 ноя 14, 13:03    [16864834]     Ответить | Цитировать Сообщить модератору
 Re: Присвоение значения  [new]
Glory
Member

Откуда:
Сообщений: 104751
Albertos
Всем спасибо, буду пытаться. Отпишусь как что. Спасибо!!

Вы бы лучше книжки по теории почитали. А то писателей то много, а читателей не хватает.
18 ноя 14, 13:11    [16864908]     Ответить | Цитировать Сообщить модератору
 Re: Присвоение значения  [new]
Albertos
Member

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

Это да не спорю. Просто такое дело, что мне пока sql особо и не нужен. Девушке дали дз, а она с IT вообще не бум бум, а я никогда с этим не работал, вот чем могу помогаю, пытаюсь разобраться. Кстати не подскажите сколько стоит такой триггер сделать?
18 ноя 14, 13:18    [16864978]     Ответить | Цитировать Сообщить модератору
 Re: Присвоение значения  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37225
Albertos
Glory,

Кстати не подскажите сколько стоит такой триггер сделать?
Про работу надо спрашивать тут: https://www.sql.ru/forum/job
18 ноя 14, 13:20    [16864992]     Ответить | Цитировать Сообщить модератору
 Re: Присвоение значения  [new]
Glory
Member

Откуда:
Сообщений: 104751
Albertos
Просто такое дело, что мне пока sql особо и не нужен. Девушке дали дз, а она с IT вообще не бум бум, а я никогда с этим не работал, вот чем могу помогаю, пытаюсь разобраться.

Мне просто интересно, а вы сообщите преподователю о том, что в решении задания приняло участие больше людей ?
18 ноя 14, 13:22    [16865008]     Ответить | Цитировать Сообщить модератору
 Re: Присвоение значения  [new]
Albertos
Member

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

Я то нет, мне это не сдавать, девушка думаю да если надо будет, скажет что-то вроде "мне помогали"
18 ноя 14, 13:24    [16865029]     Ответить | Цитировать Сообщить модератору
 Re: Присвоение значения  [new]
Glory
Member

Откуда:
Сообщений: 104751
Albertos
Glory,

Я то нет, мне это не сдавать, девушка думаю да если надо будет, скажет что-то вроде "мне помогали"

Т.е. вы хотите, чтобы вас научили чему-то, что вы сделаете за другого человека, который не удосужился выучить то, чему обучается ?

А зачем бы было кому то нужно так делать ?
18 ноя 14, 13:26    [16865049]     Ответить | Цитировать Сообщить модератору
 Re: Присвоение значения  [new]
Albertos
Member

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

Всё верно. Кому то так помочь разве что из-за денег либо просто добрая душа)
18 ноя 14, 13:28    [16865061]     Ответить | Цитировать Сообщить модератору
 Re: Присвоение значения  [new]
Glory
Member

Откуда:
Сообщений: 104751
Albertos
Всё верно. Кому то так помочь разве что из-за денег либо просто добрая душа)

Замесательная позиция. А в чем помощь то ?
Чтобы неуч получил 5ку, потом диплом и потом пришел устраиваться на работу, где продолжил бы выполнять в такой же манере уже реальные задания ?
18 ноя 14, 13:31    [16865094]     Ответить | Цитировать Сообщить модератору
 Re: Присвоение значения  [new]
Albertos
Member

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

Если логически мыслить то да, если по факту то данный курс с будущей профессией вообще не пересекается
18 ноя 14, 13:33    [16865125]     Ответить | Цитировать Сообщить модератору
 Re: Присвоение значения  [new]
Glory
Member

Откуда:
Сообщений: 104751
Albertos
Если логически мыслить то да, если по факту то данный курс с будущей профессией вообще не пересекается

Так не бывает.
Учаться для того, чтобы получить знания. А задания дают для того, чтобы проверить уровень знаний. А не для проверки способность переложить поиск решение на других.

Сообщение было отредактировано: 18 ноя 14, 13:37
18 ноя 14, 13:37    [16865152]     Ответить | Цитировать Сообщить модератору
 Re: Присвоение значения  [new]
Albertos
Member

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

Это так должно быть, не спорю.
18 ноя 14, 13:38    [16865167]     Ответить | Цитировать Сообщить модератору
 Re: Присвоение значения  [new]
Glory
Member

Откуда:
Сообщений: 104751
Albertos
Glory,

Это так должно быть, не спорю.

Тогда не забудьте сообщить преподователю, что он должен оценивать результат коллективного решения
18 ноя 14, 13:41    [16865187]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить