Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.02.2014, 14:46   #1
lexflax
Пользователь
 
Регистрация: 12.04.2011
Сообщений: 74
Сообщение перевод студента из одной группы в другую

доброго времени суток.
Делаю билеты по sql наткнулся на билет который никак сделать не могу, задание перевести студента из одной группы в другую... Помогите пожалуйста решить этот билет...
У самого пока получилось так если логику решения правильно понял... а дальше не могу сообразить как завершить запрос...
Код:
UPDATE Gr_St 
       SET CGr = ‘62’ 
       WHERE EXISTS (SELECT
Изображения
Тип файла: gif задача перевести.gif (13.2 Кб, 161 просмотров)
lexflax вне форума Ответить с цитированием
Старый 15.02.2014, 15:33   #2
Vad33
Участник клуба
 
Аватар для Vad33
 
Регистрация: 24.07.2009
Сообщений: 638
По умолчанию

Код:
update Gr_St
set CGr=(select CGr from Groups where NGr = 'ПО-62')
where NZ=(select NZ from Studs where FIO = 'Петров А.Н.')
что-то типа этого, красоту сами наведете
** Удача терпелива. **
Vad3333@inbox.ru
Vad33 вне форума Ответить с цитированием
Старый 15.02.2014, 16:40   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Так не хорошо. Если будет два Петров А.Н., то одного из них ни за что обидим. Правильно использовать идентификаторы
update Gr_St set CGr=3 where NZ=12345

PS

Там даже хуже - запрос вообще в ошибку вывалится при наличии полных тезок
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 15.02.2014 в 16:45.
Аватар вне форума Ответить с цитированием
Старый 15.02.2014, 16:50   #4
Vad33
Участник клуба
 
Аватар для Vad33
 
Регистрация: 24.07.2009
Сообщений: 638
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Так не хорошо. Если в группе будет два Петров А.Н., то одного из них ни за что обидим. Правильно использовать идентификаторы
update Gr_St set CGr=3 where NZ=12345

PS

Там даже хуже - запрос вообще в ошибку вывалится при наличии полных тезок
Так таблица же учебная, без всяких ключевых полей и ограничений, чисто на знание SQL.
Сама постановка задания некорректна при наличии полных тезок.
Думаю не нужно загружать ТС излишней информацией.

А то получится, как простую задачку по тригонометрии решать интегралами.

p.s.
Цитата:
CGr=3 where NZ=12345
Откуда информация?
** Удача терпелива. **
Vad3333@inbox.ru

Последний раз редактировалось Vad33; 15.02.2014 в 16:56.
Vad33 вне форума Ответить с цитированием
Старый 15.02.2014, 18:00   #5
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Думаю, еще неплохо бы проверять, из какой группы переводим.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 15.02.2014, 20:30   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

я бы такой вариант предложил
Код:
update Gr_St
set CGr=(select CGr from Groups where NGr = 'ПО-62')
where NZ in (select stNZ from Studs st, Gr_St grst, Grouprs gr
          where grst.NZ = st.NZ 
             and grst.Cgz = gr.Cgz 
             and st.FIO = 'Петров А.Н.'
             and gr.NGr = 'ПО-61')

Цитата:
Так таблица же учебная, без всяких ключевых полей и ограничений, чисто на знание SQL.
В данной задаче номер зачётки (поле NZ) явно выступает в роли естественного ключа.

Последний раз редактировалось Serge_Bliznykov; 15.02.2014 в 20:42.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 16.02.2014, 05:45   #7
lexflax
Пользователь
 
Регистрация: 12.04.2011
Сообщений: 74
По умолчанию

Большое спасибо всем за помощь,подскажите еще в таком вопросе...
При составлении все указывали такую строчку
Код:
set CGr=(select CGr from Groups where NGr = 'ПО-62')
А нельзя просто поставить set CGr='ПО-62' ведь это строчка означает какое значение я хочу присвоить?
А так получается по этой строке
Код:
set CGr=(select CGr from Groups where NGr = 'ПО-62')
Изменить на значение кода группы полученное из таблицы Группы при условии что название группы ПО-62 , после того как дописал задумался ...
Какое же поле нужно изменить для того чтоб перевести человека из одной группы в другую... изначально подумал что поле CGr(код группы), теперь думаю может NGr(Название группы) , или если взять за основу что называние это ПО а код это 61, 62 то все таки надо будет просто изменить только код а называние группы не трогать...
lexflax вне форума Ответить с цитированием
Старый 16.02.2014, 08:39   #8
Vad33
Участник клуба
 
Аватар для Vad33
 
Регистрация: 24.07.2009
Сообщений: 638
По умолчанию

Цитата:
Сообщение от lexflax Посмотреть сообщение
Большое спасибо всем за помощь,подскажите еще в таком вопросе...
При составлении все указывали такую строчку
Код:
set CGr=(select CGr from Groups where NGr = 'ПО-62')
А нельзя просто поставить set CGr='ПО-62' ведь это строчка означает какое значение я хочу присвоить?

Нельзя, CGr INT

А так получается по этой строке
Код:
set CGr=(select CGr from Groups where NGr = 'ПО-62')
Изменить на значение кода группы полученное из таблицы Группы при условии что название группы ПО-62 , после того как дописал задумался ...
Какое же поле нужно изменить для того чтоб перевести человека из одной группы в другую... изначально подумал что поле CGr(код группы), теперь думаю может NGr(Название группы) , или если взять за основу что называние это ПО а код это 61, 62 то все таки надо будет просто изменить только код а называние группы не трогать...
Не придумывайте, код группы вы не знаете. Он необязательно
может быть 61 или 62.
И название группы тоже нельзя менять. Иначе вся группа ПО-61 исчезнет. и появятся две группы ПО-62.
** Удача терпелива. **
Vad3333@inbox.ru
Vad33 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
перевод из одной базы дбгрид в другую Маша1993 Помощь студентам 5 28.04.2013 10:07
RadioButton перевод из одной СС в другую diekster Компоненты Delphi 1 04.02.2012 07:08
Pascal!!!Перевод чисел из одной сс в другую! kostikvbn Помощь студентам 2 04.02.2011 17:19
Перевод из одной системы счисления в другую на С++ innaa639 Помощь студентам 1 12.04.2010 14:34
перевод из одной СС в другую СС Alex26RusLink Общие вопросы C/C++ 1 27.10.2009 16:50