Thank you. I'll have to review the SQL carefully as I haven't used inner joins in quite some time :)
Quoting [EMAIL PROTECTED]: > Create a temporary table that will act as a map between your old IDs and > your new ones. That way you can re-use those values and change them from > the old values to the new values. > > LOCK TABLE table1 WRITE, table2 WRITE, table3 WRITE; > > select @max_id:=max(id) FROM table1; > > CREATE TEMPORARY TABLE tmpIDMAP > SELECT id, [EMAIL PROTECTED] as newID > FROM table2 > > INSERT into table1(id, list of other columns) > select m.newID, list of other columns from table2 > INNER JOIN tmpIDMAP m > ON m.id = table2.id > > UPDATE table3 > INNER JOIN tmpIDMAP m > ON m.id = table3.parentID > SET table3.parentID = m.newID > > (repeat for other child tables) > > UNLOCK > > I don't have time to give a better explanation right now but if you write > the list back, I can fill in the details later. > > Shawn Green > Database Administrator > Unimin Corporation - Spruce Pine > > Andrew Mull <[EMAIL PROTECTED]> wrote on 12/21/2004 12:20:57 > PM: > > > You are correct in that I need to merge two tables. However, I'm > > not clear on > > how to update the FKs in the sub tables. > > > > Example, the main table (Person) has a sub table (Address). Person has > a 1:N > > relationship with Address. So Address has the Person's ID as a FK. How > do I > > update the FK in Address with the new ID assigned to Person that was > created > > with the merge? > > > > Thanks for the help! > > > > > > Quoting Philippe Poelvoorde <[EMAIL PROTECTED]>: > > > > > Andrew Mull wrote: > > > > > > > I'm working on a rather large database with many cross-linked tables > > > > > currently using auto increment IDs. The system is primarily a web > based > > > > system, however, there will be times that the system will be run as > a > > stand > > > > > > > alone server...meaning no internet connection is available. > > > > > > > > The question arises that if someone enters information to the > database on > > > the > > > > website, while others are entering information on the local > database, what > > > is > > > > the best way to merge the data? I would imagine that we would run > into > > > many > > > > duplicate auto increment IDs. > > > > > > > > I'm sure that for one table insert, this would not be a problem as I > could > > > > > > > store the SQL statement in a text file without the ID specified, and > run > > it > > > as > > > > a batch process on the live server when we get connectivity. But I > don't > > > have > > > > a handle on how to update the sub tables that have a FK pointer. > > > > > > > > Any ideas? > > > > > > > > Thanks! > > > > -Andy > > > > > > > > > > I understand your question as the following: you want to merge 2 > tables > > > comming from different database in a single table. If this is not what > > > > you want, sorry :) > > > I would do that : > > > LOCK TABLE table1 WRITE, table2 WRITE > > > select @max_id:=max(id) FROM table1; > > > UPDATE table2 SET [EMAIL PROTECTED]; > > > insert into table1(list of columns) select [list of columns] from > table2 > > > UNLOCK > > > > > > and then updating your FK within the update query. > > > Keep in mind that I didn't try with InnoDb tables... (but works fine > for > > > MyIsam) > > > > > > -- > > > Philippe Poelvoorde > > > COS Trading Ltd. > > > > > > > > > > > > -- > > MySQL General Mailing List > > For list archives: http://lists.mysql.com/mysql > > To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED] > > > -- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]