Объединение двух таблиц mysql

Эдди

Новичок
В одной из баз данных необходимо объединить две таблицы (столбцы идентичны в обеих).
Вроде, когда-то делал. И не без прокручивания в цикле в php.
Далее надо удалить дубликаты (что легче).

Подскажите, с чего начать?
 

Фанат

oncle terrible
Команда форума
С того, что таблица изначально делается одна.
 

Фанат

oncle terrible
Команда форума
Да при чем здесь РНР.
Таблица изначально должна быть одна.
Не две идентичных, а одна. Это азбука баз данных.
Тогда и вопроса не будет, как объединить, с РНР или без.
 

Эдди

Новичок
Да при чем здесь РНР.
Таблица изначально должна быть одна.
Не две идентичных, а одна. Это азбука баз данных.
Тогда и вопроса не будет, как объединить, с РНР или без.
Сглупил. Твое мнение ценю. Только не надо так агрессивно.
Ты дал подсказку.
Таблица реально одна. Отличаются строки только по ID.
Делаю UPDATE ID. Потом убираю дубликаты. ТАк?
 

Фанат

oncle terrible
Команда форума
агрессия тебе показалась
не очень понял алгоритм.
как минимум, если id - первичный ключ, как это обычно бывает, проапдейтить их тебе никто не даст.
вообще, дубли ищутся запросами вида
PHP:
SELECT t1.id FROM table t1 LEFT JOIN table t2 ON t1.field1=t2.field1 AND t1.field2=t2.field2 ... WHERE t2.id IS NOT NULL
или
PHP:
SELECT count(*) cnt FROM table GROUP BY concat(field1,field2,...) HAVING cnt > 1;
 

Эдди

Новичок
агрессия тебе показалась
не очень понял алгоритм.
как минимум, если id - первичный ключ, как это обычно бывает, проапдейтить их тебе никто не даст.
вообще, дубли ищутся запросами вида
PHP:
SELECT t1.id FROM table t1 LEFT JOIN table t2 ON t1.field1=t2.field1 AND t1.field2=t2.field2 ... WHERE t2.id IS NOT NULL
или
PHP:
SELECT count(*) cnt FROM table GROUP BY concat(field1,field2,...) HAVING cnt > 1;
Ща попробую.
А если более конкретно, то:
- есть рассылки по разным странам. Отличаются только по id страны. Мейл и контактное лицо еще в этой таблице.
Хочу все мейлы перевести в одну таблицу.
Уже, кажется, понял.
Просто апдейтить страну и баста. Не так?

ID - не первичный ключ. ID - указатель страны.
 

Фанат

oncle terrible
Команда форума
я не понял этот сетап, если честно.
талица одна? в ней есть несколько одинаковых емейлов с ид разных стран?
а надо оставить только один? А от какой страны?
 

Эдди

Новичок
я не понял этот сетап, если честно.
талица одна? в ней есть несколько одинаковых емейлов с ид разных стран?
а надо оставить только один? А от какой страны?
От любой страны. Потом надо будет избавиться от дубликатов.
 

Эдди

Новичок
Да. Есть с одинаковыми записями. Кто-то подписывается на Италию, кто-то на Францию.

Хочу объединить все таблицы с мейлами и контактными лицами в одну. Потом скопирую их на каждую страну. Уже в ПОЛНОМ варианте.
 

Baton

Новичок
Я однажды объединял 2 таблицы назовем их users и doctors. Некто до меня решил разделить одну сущность по принципу, сотрудники из первой таблицы имеют доступ к программе, а вторые - нет.

Когда я пришел в компанию, я начал делать график для сотрудников, в таблице `graphic` пришлось завести такую `прелесть` как `position`, т.к. автоинкрементные ключи из таблиц `users` и `doctors` могли пересекаться, требовалось уточнение чей это ID (user, doctor).

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

Таблицы объединял в пхп, т.к. очень легко написать адаптер, таблицы были схожи но не совсем. Ключи объединял по принципу MAX(users.ID)+i, предварительно сделав блок на таблицы. Да слить таблицы это не самое сложное, сложнее было исправить кучу кода и записей в БД, но это уже совсем другая история.

Ах да, кстати назвал таблицу график - graphic и позже догнал, что по-русски это не совсем будет и график, так и висит, жупелом следующим поколениям))
 
Сверху