Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Firebird, InterBase Новый топик    Ответить
 Merge, fk, много таблиц - сложно  [new]
Alepawka
Member

Откуда:
Сообщений: 40
Здравствуйте!
Необходимо реализовать процедуру изменения данных.
Почитал документацию - выбор пал на использование merge.
Но вот незадача - у этой таблицы 7 внешних ключей. Выборку то я сделал, а вот как реализовать изменения в ней данных - вопрос хороший
1) если использовать merge, то после using .. on прописывать через and все эти ключи(типа a.id = b.id_a and c.id=b.c_id - их будет 7 штук! - или это немного??)
2) может кто скинуть пример такого рода задачи, да бы я посмотрел реализацию, и сделал под свою
3) может тогда делать через update без merge?
12 апр 19, 14:12    [21860555]     Ответить | Цитировать Сообщить модератору
 Re: Merge, fk, много таблиц - сложно  [new]
Alepawka
Member

Откуда:
Сообщений: 40
Да, забыл, версия fb 2.5
12 апр 19, 14:15    [21860561]     Ответить | Цитировать Сообщить модератору
 Re: Merge, fk, много таблиц - сложно  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 29784

примеры есть в доке.

Posted via ActualForum NNTP Server 1.5

12 апр 19, 14:16    [21860564]     Ответить | Цитировать Сообщить модератору
 Re: Merge, fk, много таблиц - сложно  [new]
Alepawka
Member

Откуда:
Сообщений: 40
Мимопроходящий,
Видел, но ничего они мне не дают
12 апр 19, 14:28    [21860580]     Ответить | Цитировать Сообщить модератору
 Re: Merge, fk, много таблиц - сложно  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 29784

дерзай, экспериментируй, щупай.

Posted via ActualForum NNTP Server 1.5

12 апр 19, 14:38    [21860588]     Ответить | Цитировать Сообщить модератору
 Re: Merge, fk, много таблиц - сложно  [new]
KreatorXXI
Member

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

Если используется несколько таблиц для выборки, то merge самое оно. Можно ещё попробовать здесь показать свой вариант запроса через merge.
12 апр 19, 14:45    [21860594]     Ответить | Цитировать Сообщить модератору
 Re: Merge, fk, много таблиц - сложно  [new]
Alepawka
Member

Откуда:
Сообщений: 40
KreatorXXI,
Я как раз не могу построить запрос через merge, потому что у меня в using будет много таблиц, и если писать так:
Merge into a
Using (select * from b), (select * from c where c_name = 'abc')

On a.b_id = b.id and a.c_id = c.id

Я сомневаюсь, что так будет работать
12 апр 19, 14:57    [21860607]     Ответить | Цитировать Сообщить модератору
 Re: Merge, fk, много таблиц - сложно  [new]
Alepawka
Member

Откуда:
Сообщений: 40
Так ещё и надо брать данные не только из таблицы a
12 апр 19, 14:58    [21860608]     Ответить | Цитировать Сообщить модератору
 Re: Merge, fk, много таблиц - сложно  [new]
Ivan_Pisarevsky
Member

Откуда: НН
Сообщений: 8253
Метаданных нет, примера нет. Вопроса тоже нет. Тебе научиться или конкретную задачу решить разово?
Да мерж штуковина мощная и зело полезная, научиться ею орудовать посложнее, чем селектом, но тоже можно.

Что не осилил решить через мерж завсегда можно решить хранимкой.Картинка с другого сайта.
12 апр 19, 15:20    [21860621]     Ответить | Цитировать Сообщить модератору
 Re: Merge, fk, много таблиц - сложно  [new]
KreatorXXI
Member

Откуда: Москва
Сообщений: 619
Alepawka
KreatorXXI,
Я как раз не могу построить запрос через merge, потому что у меня в using будет много таблиц, и если писать так:
Merge into a
Using (select * from b), (select * from c where c_name = 'abc')

On a.b_id = b.id and a.c_id = c.id

Я сомневаюсь, что так будет работать


Это не конкретика. Под using надо писать select с join'ами. Типа так:
...
using ( select b.id1, c.id1
          from b
                 inner join c on c.id=b.id
       ) as q
on a.id1=q.id1 and a.id2=q.id2
...

Либо под using использовать union.
Примеры есть в настольной книге.
Упрости для начала задачу до двух-трёх таблиц, и дай пример, что хотелось бы.
12 апр 19, 16:07    [21860675]     Ответить | Цитировать Сообщить модератору
 Re: Merge, fk, много таблиц - сложно  [new]
Alepawka
Member

Откуда:
Сообщений: 40
Ivan_Pisarevsky,
Конкретрую задачу решить и все.
Есть таблица, как я уже сказал, с внешними ключами

+ table a

Table a(
Id
B_id,
C_id
D_id,
E_id,
Time,
F_id,
G_id
)

Как я уже сказал, сделал выборку, какие данные мне необходимо получить
+ select

Select d.name,f.name,c.surname||c.firstname,j.term,s.name, --и т.д.
from a as a join b on a.b_id 
Join bb(т.е. другая таблица, не связанная с а) as c on b.bb_id = c.id
Join g on g.id = a.g_id
Join d on d.id = a.id
-- и так join около 15



Я постарался объяснить свою задачу
Повторюсь
Необходимо сделать процедуру изменения данных, хочу сделать через merge.
Как лучше сделать?
Сложность в чем - есть внешние ключи в таблице A
Есть идея в процедуре получать данные, брать с тех таблиц id и поставлять в A.
12 апр 19, 17:37    [21860739]     Ответить | Цитировать Сообщить модератору
 Re: Merge, fk, много таблиц - сложно  [new]
Dmitry Kurbsky
Member

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

При чём тут вообще внешние ключи? Чем они мешают?
12 апр 19, 17:55    [21860756]     Ответить | Цитировать Сообщить модератору
 Re: Merge, fk, много таблиц - сложно  [new]
Ivan_Pisarevsky
Member

Откуда: НН
Сообщений: 8253
Alepawka
Как лучше сделать?
можно процедурой, можно мерж-ем. В чем конкретно твой вопрос? где скрипт с исходными данными? где желаемый результат?
12 апр 19, 18:05    [21860770]     Ответить | Цитировать Сообщить модератору
 Re: Merge, fk, много таблиц - сложно  [new]
KreatorXXI
Member

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

а какую таблицу мёржить надо?
15 апр 19, 18:18    [21862900]     Ответить | Цитировать Сообщить модератору
Все форумы / Firebird, InterBase Ответить