(MySQL 5) INSERT из одной таблицы в другую по условию.

Дениска Рохлин
Дата: 01.02.2013 00:17:12
Есть две таблицы следующего вида:

CREATE TABLE table1 (
    id int UNSIGNED NOT NULL auto_increment,
    ins_id int UNSIGNED NOT NULL default '0',
    ins_num varchar(32) NOT NULL default '',
    dob date NOT NULL default '1000-01-01', 
    PRIMARY KEY (id)
)

CREATE TABLE table2 (
    id int UNSIGNED NOT NULL auto_increment,
    ins_id int UNSIGNED NOT NULL default '0',
    ins_num varchar(32) NOT NULL default '',
    dob char(10) NOT NULL default '', 
    PRIMARY KEY (id)
)


Поле dob в таблице 2 - строка в формате YYYY/MM/DD, а в таблице 1 - это тип date.

Требуется вставить значения ins_id из таблицы 2 в таблицу 1, где:
table2.dob = table1.dob AND table2.ins_num = table1.ins_num AND table2.dob <> '' AND table2.ins_num <> ''

ЗЫ. Таблицы содержат прибл. по 700 000 записей каждая.

Заранее спасибо!
Akina
Дата: 01.02.2013 14:20:51
А проблема-то в чём?
Дениска Рохлин
Дата: 01.02.2013 21:30:10
Akina,

Проблема в составлении соответствующего запроса.
Akina
Дата: 02.02.2013 00:16:04
Дениска Рохлин
Требуется вставить значения ins_id из таблицы 2 в таблицу 1, где:
table2.dob = table1.dob AND table2.ins_num = table1.ins_num AND table2.dob <> '' AND table2.ins_num <> ''


Ну тогда объясняй, что тебе надо на самом деле. Вставить? тогда какие нафиг условия? может, обновить? Или именно вставить, но тебе не удалось объяснить?

В общем, давай так. Ты проверишь КАЖДОЕ СЛОВО - чтобы оно употреблялось тобой в том же значении, в каком это делают остальные, а потом заново задашь вопрос. Тогда тебя поймут и помогут в решении проблемы.
Может помочь пример исходных и конечных данных с объяснением, почему именно так.
Дениска Рохлин
Дата: 02.02.2013 00:41:39
Да, мне нужо обновить поле ins_id в таблице 1 значениями поля ins_id из таблицы 2, где (СДЕЛАЙ_DATE(table2.dob) = table1.dob AND table2.ins_num = table1.ins_num AND table2.dob <> '' AND table2.ins_num <> '').
Дениска Рохлин
Дата: 02.02.2013 00:49:55
Akina,

ins_id - идентификатор страхового полиса
ins_num - номер страхового полиса
dob - дата рождения

Клиента можно идентифицировать по значениям ins_id или (ins_num И dob).

Вопрос в том, что в таблице 1 отсутствуют многие идентификаторы полисов, которые можно взять из таблицы 2.
Akina
Дата: 02.02.2013 22:30:09
То есть вся твоя проблема - как преобразовать строку YYYY/MM/DD в тип даты? дык http://dev.mysql.com/doc/refman/5.5/en/cast-functions.html#function_cast
CAST(table2.dob AS DATE) = table1.dob
Дениска Рохлин
Дата: 02.02.2013 22:53:39
Akina,
Нет, проблема в том, чтобы составить запрос, который бы брал значения из таблицы 2 и обновлял соответствующие поля в подходящих по условию записях таблицы 1. Т.е. что-то типа UPDATE-SELECT.
Akina
Дата: 03.02.2013 23:08:27
Дениска Рохлин
Дата: 04.02.2013 01:42:04
Спасибо, то что надо!