|
|
|
Update на основе данных другой таблицы в FireBird1.5
|
|||
|---|---|---|---|
|
#18+
Как выполнить обновление таблицы на основе данных другой таблицы??? Подскажите можно ли в FireBird1.5 выполнить нечто похожее. Или команду update можно выполнять накладываю условие проверки только на обновляемую таблицу. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2004, 09:27:08 |
|
||
|
Update на основе данных другой таблицы в FireBird1.5
|
|||
|---|---|---|---|
|
#18+
Может кто нибудь знает как решить эту проблему через <B>View</B>. Через View, я попытался, т.е. использовать <B>update <Имя View> set <...></B>. Но View становится не модифицируемым при использовании таких средств как: - <B>подзапросы</B>; - агрегатных ф-ии; - UDF; - предложения <B>Distinct, having</B> и д.р. В книге все эти ограничения предлагают обойти через триггер. У меня не получилось. Не знаю как можно написать, что серъёзное не обновляя данные таблицы на основе данных других таблиц. Не уже ли ни укого такой проблемы не было, товарищи Мастера? Если кто знает как решить эту проблему просто подскажите. Текст свих запросов не даю потомучто наверняка сложно будет сразу разобраться. Если кто попросит то покажу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2004, 15:05:02 |
|
||
|
Update на основе данных другой таблицы в FireBird1.5
|
|||
|---|---|---|---|
|
#18+
Лично я ничего не понял что конкретно надо сделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2004, 15:12:02 |
|
||
|
Update на основе данных другой таблицы в FireBird1.5
|
|||
|---|---|---|---|
|
#18+
А я бы сказал так мало того что не понял, а понял что ты пытаешся в системных таблицах лазить а это не есть ГУД, здесь я тебе не помощник ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2004, 15:14:27 |
|
||
|
Update на основе данных другой таблицы в FireBird1.5
|
|||
|---|---|---|---|
|
#18+
Стандартная конструкция: Update <Таблица> set <поле1>='xxx' where <условие> <Условие> - накладывается только на Изменяюмую таблицу. Я хочу: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Такая вещь не прокатывает, потомучто <Таб2> должно быть описано после слова from. А конструкции Update <...> set <...> from ... в FB1.5 в отличии от MSSQL2000 нет. Может так проще и понятней. Системные таблицы тут ни причем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2004, 15:31:39 |
|
||
|
Update на основе данных другой таблицы в FireBird1.5
|
|||
|---|---|---|---|
|
#18+
Может кто нибудь знает как решить эту проблему через View. Да какую проблему-то? Через View, я попытался, т.е. использовать update <Имя View> set <...>. Но View становится не модифицируемым при использовании таких средств как: - подзапросы; - агрегатных ф-ии; - UDF; - предложения <B>Distinct, having</B> и д.р. В книге все эти ограничения предлагают обойти через триггер. У меня не получилось. Чего не получилось? Если кто знает как решить эту проблему просто подскажите. Текст свих запросов не даю потомучто наверняка сложно будет сразу разобраться. Если кто попросит то покажу. В правильно сформулированном вопросе содержиться большая часть ответа. Удачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2004, 15:36:18 |
|
||
|
Update на основе данных другой таблицы в FireBird1.5
|
|||
|---|---|---|---|
|
#18+
Судя по всему, Ваше предложение допустимо. Хотя не совсем понятно. Возможно, Вы имели в виду: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. Что такое "rdb$default_sourse"? Очень подозреваю, что такого поля нет в природе... Единственное замечание: при работе с командами модификации, обратите внимание на то, что Вы не можете в предложении FROM любого подзапроса, модифицировать таблицу к которой ссылаетесь с помощью основной команды. Это относится ко всем трем командам модификации. Еще: не делайте ссылки к текущей строке таблицы указанной в команде, которая является соотнесенным подзапросом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2004, 15:41:51 |
|
||
|
Update на основе данных другой таблицы в FireBird1.5
|
|||
|---|---|---|---|
|
#18+
На вот почитай, может поможет... http://www.ibase.ru/devinfo/updsame.htm Удачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2004, 15:42:29 |
|
||
|
Update на основе данных другой таблицы в FireBird1.5
|
|||
|---|---|---|---|
|
#18+
Лентяй спасибо за сылку. Первый пример получается медленным. И что самое плохое, что это единственный способ. Код: plaintext 1. 2. 3. И все таки. Можно сделать через View и триггер, но уменя ни как не заработает. А в книге для етого случая пример триггера не расписан. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2004, 16:13:47 |
|
||
|
Update на основе данных другой таблицы в FireBird1.5
|
|||
|---|---|---|---|
|
#18+
А в процедуре ты это сделать не хочешь? Если я правильно понял задачу, то в процедуре можно попробовать использовать RDB$DB_KEY в таком духе: FOR SELECT T1.RDB$DB_KEY,T2.RDB$DB_KEY FROM TABLE1 T1 JOIN TABLE2 T2 INTO :KEY1,:KEY2 DO UPDATE TABLE1 SET ZZZ=(SELECT ... FROM TABLE2 WHERE RDB$DB_KEY=:KEY2) WHERE RDB$DB_KEY=:KEY1; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2004, 16:36:43 |
|
||
|
Update на основе данных другой таблицы в FireBird1.5
|
|||
|---|---|---|---|
|
#18+
VKV Лентяй спасибо за сылку. Первый пример получается медленным. И что самое плохое, что это единственный способ. Код: plaintext 1. 2. 3. И все таки. Можно сделать через View и триггер, но уменя ни как не заработает. А в книге для етого случая пример триггера не расписан. А индекс по t1.field1 присутствует? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2004, 17:10:26 |
|
||
|
Update на основе данных другой таблицы в FireBird1.5
|
|||
|---|---|---|---|
|
#18+
Все зависит от количеста строк в таблицах. Тут и индекс не поможет. Хуже другое, вместо того чтобы Изменить выборочные записи, он (запрос) все равно будет проходить все записи таблицы. Потомочто условие связывания нельзя добавить в Where предложения Update. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2004, 17:14:42 |
|
||
|
Update на основе данных другой таблицы в FireBird1.5
|
|||
|---|---|---|---|
|
#18+
VKVВсе зависит от количеста строк в таблицах. Тут и индекс не поможет. Хуже другое, вместо того чтобы Изменить выборочные записи, он (запрос) все равно будет проходить все записи таблицы. Потомочто условие связывания нельзя добавить в Where предложения Update. Чего-то я не понял. Этот запрос меняет ВСЕ записи, как же ему их не "проходить" ВСЕ? Если менять надо не все - то почему бы where не добавить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2004, 17:36:24 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=32599939&tid=1578273]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
195ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
70ms |
get tp. blocked users: |
2ms |
| others: | 220ms |
| total: | 534ms |

| 0 / 0 |
