Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите связать 2 таблицы! / 8 сообщений из 8, страница 1 из 1
18.10.2002, 13:10:50
    #32059633
Помогите связать 2 таблицы!
Здравствуйте!

Есть две таблицы с отношением один ко многим. Стандарное отображение Master->Detail.
Таблица_1 Таблица_2
ФИО Ед_изм Колво_1 Колво_2 Колво_3
Иванов штуки 1 2 3

1.Мне необходимо отобразить их в ОДНОЙ СТРОКЕ: Использую хранимую процедуру: формированию Select с полями из основного файла + цепляю поля из дочерней таблицы. Выводит.

2. Теперь этот гибрит надо КОРРЕКТИРОВАТЬ:
а. Добавление и удаление производится в хранимой процедуре. Это решается.

б. а вот РЕДАКТИРОВАТЬ??? Поля основной таблицы модифицируются, а вот как добраться к полям дочерней таблицы???
Если корректировать напрямую, то посылается запрос типа "UPDATE dbo.RelateUser
SET [Колво]=50 WHERE [Код_связи]=1
AND [Колво]=40 AND [Код связи]=3" - т.е. в качестве условия передаются значения всех ключевых полей, учавствующих в записи.
Может использовать предстваления с триггером Instead OF - но он не выдает таблиц inserted и deleted - не находит записи???
...
Рейтинг: 0 / 0
18.10.2002, 14:22:18
    #32059691
Maxx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите связать 2 таблицы!
Я подобное решал ХП(написанны на каждый чих юзера).
Береться запись на редактирование,редактируетьяс,обновляеться - перечитывается представление
...
Рейтинг: 0 / 0
18.10.2002, 18:43:06
    #32059903
Помогите связать 2 таблицы!
Спасибо за надежду!

Только можно ли поподробнее : где подцепить эту ХП. Может найдется и пример.

Заранее спасибо.
...
Рейтинг: 0 / 0
19.10.2002, 00:41:58
    #32059930
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите связать 2 таблицы!
Может использовать предстваления с триггером Instead OF - но он не выдает таблиц inserted и deleted - не находит записи???

В Instead OF триггерах "старые" значения хранятся в самой таблице, а не в таблице deleted. На то они и Instead OF триггера.

А таблица inserted по-прежнему содержит "новые" значения.
...
Рейтинг: 0 / 0
21.10.2002, 13:40:20
    #32060225
Помогите связать 2 таблицы!
Спасибо за замечание про триггер Insted OF (не встречал в книгах). Только проблему это не решает.

Попытался сделать view - на половину помогает: можно написать запрос, в котром явно указать поле (точнее его алиас, под которым его создали в view) - позволяет корректировать. Однако, если корректировать (например, из enterprise), то выдается запрос типа
{ UPDATE dbo.RelateUser SET [Наименование связи]='Код 1'
WHERE [Код польз]=24 AND [Код связи]=1 AND [Наименование связи]='Код1'
AND [Код польз]=24 AND [Код связи]=3 AND [Наименование связи]='Код3'
AND [Код польз]=24 AND [Код связи]=4 AND [Наименование связи]='Код 4' }

но я хочу КОРРЕКТИРОВАТЬ только поле [Наименование связи] c значением ключевых полей [Код польз]=24 AND [Код связи]=1

КАК БЫТЬ???
...
Рейтинг: 0 / 0
21.10.2002, 13:57:02
    #32060234
Garya
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите связать 2 таблицы!
View становится обновляемым, если у него есть instead-триггеры. Если нет, то - увы... Для того, чтобы instead-триггер отрабатывал, необходимо создать VIEW с опцией WITH (VIEW_METADATA).
В некоторых случаях во VIEW необходимо явно сделать поле "вычисляемым", чтобы совместно с instead-триггером оно корректно работало. Я обычно это делаю как-то так: CAST(SomeField as varchar(100)) as AliasName.

А есть еще другие способы, реализация которых зависит от клиента. Если клиент ADP (Access), то там у формы есть свойства для превращения необновляемого Recordset-а в обновляемый (с помощью UniqueTable и Resinc Command). В Delphi можно вообще создать свои события и их обработчики. В общем, возможностей - море.
...
Рейтинг: 0 / 0
21.10.2002, 15:34:29
    #32060297
Оля
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите связать 2 таблицы!
Добрый день!
>КАК БЫТЬ???

Посмотреть внимательно на оператор UPDATE. На самом деле Вы пытаетесь обновить некоторое подмножество записей в дочерней таблице, которые не совпадают ни по какому признаку. Это в лоб не просто.

Вы шифруете отношение один ко многим одной строкой (Я так поняла, что не запись, а именно строка?).
Значит должна быть процедура дешифрования, где из одной строки получается много записей на стороне "многие". В INSTEAD OF триггере и придется это делать.

Есть еще решение в лоб. У Вас, как Вы сказали, есть процедуры добавления и удаления - вот и удаляйте и добавляйте:-)))))
Кстати, как работает у вас добавление? Корректирование м.б. аналогичным.
Удачи!
...
Рейтинг: 0 / 0
31.10.2002, 12:15:06
    #32063523
Помогите связать 2 таблицы!
Спасибо всем за ответы!!!

Буду пробовать:
A.instead триггеры на view
B.или писать процедуру корректировки, хотя не хотел делать, да придется - клиента пишу на Дельфи, а он "сам" формирует запрос на обновление (причем не всей записи, а только измененных полей) - а так придется делать подмену обновлять всю запись!

PS: У Вас форум живой - задавал ответы на relib.com, в Королевстве Дельфи, мастера дельфи - ответов 0.5.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите связать 2 таблицы! / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]