MySQL разделение путем дублирования - PullRequest
0 голосов
/ 11 декабря 2011

учитывают следующее: 3 таблицы: Пользователи, Предприятия и Адреса.

В строках Пользователей и Предприятий есть поля address_id, которые соответствуют строкам в Адреса.из-за ошибки (связанной со значениями по умолчанию) у меня возникает ситуация, когда по некоторым адресам у меня есть и пользователь, и компания с одинаковым идентификатором адресов.

Я хочу разделить его так, чтобы оно в началеУ меня есть

Users.id , Users.address_id  
1        , 1  
2        , 2  
3        , 3  

и

Businesses.id , Businesses.address_id  
1             , 4  
2             , 3  
3             , 2  
4             , 5

, а адреса имеют 5 строк с id = 1 до 5 и некоторые другие информационные столбцы (город и т. Д.).

Iхотели бы, чтобы предприятия 2 и 3, которые в настоящее время указывают на адреса (3 и 2), которые также используются пользователями (3 и 2 соответственно), указывали бы на две новые строки в адресах, которые будут копиями исходных строк.

т.е. добавить строки 6 и 7 к адресам, которые будут копиями строк 3 и 2 соответственно.и соответственно установите Buseries.address_id (т. е.

updated). Предприятия должны выглядеть следующим образом:

Businesses.id, Businesses.address_id  
1            , 4  
2            , 6  
3            , 7  
4            , 5

, чтобы каждая строка в адресах использовалась только одной из двух других таблиц, а данныесемантика остается прежней.

1 Ответ

0 голосов
/ 11 декабря 2011

отсутствие полных структур таблиц делает невозможной полную запись, поэтому приведем некоторый псевдокод.

1) Выберите записи из адресов внутреннего объединения бизнес внутреннего объединения по идентификатору адреса.это дает нам те адреса, которые в настоящее время являются общими.

2) вставьте в адрес вышеуказанные записи посредством вставки в таблицу из (возможно, выберите?)

3) в последний раз обновите идентификатор бизнес-адреса set =max (addressID) где поля адреса = поля адреса из текущего распределения.(поскольку мы знаем, что будут дублированные адреса) max будет более новым.

...