проблема со склеиванием таблиц MYSQL

A
На сайте с 04.10.2012
Offline
15
671

Здравствуйте,у меня проблема.

Есть таблица в которой много всяких полей и первичный уникальный ключ id

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

Мне нужно занести из второй таблицы в первую те,которых нет в первой.Проще говоря

$this->_db->doQuery(sprintf("insert into %s (select * from %s where xml_id not in (select xml_id from %s))", $this->_flatTable, $this->_flatTmpTable, $this->_flatTable));

Но есть проблема,и там и там есть колонка id,и получается что если они одинаковые то запись не переносится,т.к. такой id уже есть в $this->_flatTable

Если убрать поле id во второй таблице то тогда вообще ничего не переносится,даже если исходная таблица пустая.Похоже из-за того что структура таблиц тогда становится разной.Не знаю как можно решить эту проблему

siv1987
На сайте с 02.04.2009
Offline
427
#1

INSERT INTO table (все поля кроме ид) SELECT все поля кроме ид FROM table2 WHERE xml_id NOT IN (SELECT xml_id FROM table)

A
На сайте с 04.10.2012
Offline
15
#2

Надеялся что можно как-то изящней,но ладно.

Спасибо)

edogs software
На сайте с 15.12.2005
Offline
775
#3
Agronya:
Надеялся что можно как-то изящней,но ладно.
Спасибо)

Есть. Пишите insert ignore вместо просто insert.

Разработка крупных и средних проектов. Можно с криптой. Разумные цены. Хорошее качество. Адекватный подход. Продаем lenovo legion в спб, дешевле магазинов, новые, запечатанные. Есть разные. skype: edogssoft
A
На сайте с 04.10.2012
Offline
15
#4
edogs:
Есть. Пишите insert ignore вместо просто insert.

Тогда он будет игнорировать эту записи,а мне нужно чтобы он их записывал

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий