Можно ли обойтись без временной таблицы

macros

Guest
Можно ли обойтись без временной таблицы

Здравствуйте друзья
помогите с запросом пожалуйста
Есть таблица поле F-ID автоинкрементное
F-ID | etc.
------+-------
1 | bla-bla
3 | bla-bla
4 | bla-bla
ставим в нее запись и получилось например
F-ID | etc.
------+-------
1 | bla-bla
3 | bla-bla
4 | bla-bla
8 | bla-bla

далее в другой таблице вида
F-ID | name
------+-------
1 | qqq
1 | www
3 | eee
4 | rrr

должно получиться

F-ID | name
------+-------
1 | qqq
1 | www
3 | eee
4 | rrr
8 | qqq
 

macros

Guest
sorry
ошибка не дописал последнюю строчку
должно получиться
F-ID | name
------+-------
1 | qqq
1 | www
3 | eee
4 | rrr
8 | qqq
8 | www
 

Demiurg

Guest
insert into first(etc.) values( 'bla-bla');
insert into second(F-ID , name) values(LAST_INSERT_ID() , 'qqq');
 

Demiurg

Guest
А почему сразу 2 записи вставляются ?
 

macros

Guest
Спасибо, Demiurg,
Re: А почему сразу 2 записи вставляются ?
В эту же таблицу копируется все записи с существующим F-ID, сколько бы их не было но с новым F-ID
никаких уников в этой таблице сделать невозможно потому как один F-ID может иметь много name и наоборот. Все prymary в других таблицах.
 

macros

Guest
И сделать это никак не получается :0
Help me пожалуйста.
 

macros

Guest
таблица с рубриками
R_id(prymary)
R_name

Таблица с предприятиями
R_id(для связис первой таблицей)
F_id(prymary)
Firm_ name
Adress

таблица с телефонами
F_id(для связи со второй таблицей)
otdel
phone

Проблема в том что несколько фирм могут иметь один телефон
и одна фирма несколько подразделений с пересекающимися телефонами но разными адресами
кроме того фирма может относиться одновременно к нескольким рубрикам(в другой рубрике у нее будет другой F_ID)
Я понимаю, что третья таблица раздуется но что с этим делать не представляю
Такое копирование решает много проблем т.е. клиент хочет кнопку "скопировать фирму в другую рубрику" и чтобы она скопировалась со всеми телефонами а после он уже будет удалять ненужные и вставлять нужные. Перенос фирмы в другую рубрику проблем не представляет а вот копирование...
в принципе temporaly table могло бы помочь.
 

macros

Guest
Нигде т.к. сами фирмы не знают какой отдел (otdel) к какому подразделению относится так что можно ориентироваться на (otdel) причем такой отдел как бухгалтерия относится к фирме которая занимается разными делами по разным адресам и есс-но относиться к разным рубрикам в смысле фирма а не ее бухгалтерия которая соответственно должна находиться и там и там.
 

macros

Guest
Деми, Я сам уже слабо понимаю, а еще и тебя грузить совестно
ты мне лучше ответь можно ли сделать так
найти все значения в таблице у которых F-ID==1
F-ID | name
------+-------
1 | qqq
1 | www
3 | eee
4 | rrr
и скопировать в эту же таблицу с другим (Заданным например "8" ) F-ID чтобы получилось
F-ID | name
------+-------
1 | qqq
1 | www
3 | eee
4 | rrr
8 | qqq
8 | www

вот почему две записи вставляются(см.выше)потому что нашли две записи с F-ID==1

Все остальное уже работает
 

macros

Guest
Слышал бы ты постановку задачи
Какие прекрасные глаза были у этой женщины ;)
 

Demiurg

Guest
В первую очередь у тебя не правильная структара БД.
Надо просто сесть и подумать что у тебя должно получиться. Потом все это описать и из этого уже можно строить структуру. Тогда проблем со вставкой кучи записей не будет.
 

akul

Guest
когда у тебя у одной фирмы много телефонов и у одного телефона много фирм, это называется связью "много-ко-много" и в SQL реализуется при помощи дополнительной таблицы связи. Для каждой такой связи - еще одна дополнительная таблица. (это - одна из причин, почему я занялся OO базами, хе-хе).
 

macros

Guest
Это уже неделю как работает
Клиенты довольны, я тоже (том числе моральное удовлетворение)

Всем спасибо. Тема закрыта.
 
Сверху