Построить запрос (ы) для копирования / обновления таблицы MYSQL - PullRequest
0 голосов
/ 20 июля 2011

В данный момент ищем извлечь данные из 2 таблиц и вставить в другую. Таблицы следующим образом (с примером идеальных данных):

Table1
T1ID(PK)  T1Field1
301       2011-07-01
302       2011-07-01

Table2
T2ID(PK)  T2Field2  T2Field3  T2Field4
521       301       555       Apple
522       301       666       Pear


Table3 (new table)
T3Field1  T3Field2     T3Field3    T3Field4
301       2011-07-01   555         Apple
301       2011-07-01   666         Pear

Поиск наименьшего и наиболее эффективного запроса для выполнения следующих действий:

  1. Insert T1ID into T3Field1 + Insert T1Field1 into T3Field2

  2. Update T3Field3 where T3Field1 = T2Field2 (for each) -*

Просто использовали mysql insert для первого запроса. Это НУЖНО сделать в первую очередь, так как оно содержит информацию о метках времени.

* Попытка ВНУТРЕННЕГО СОЕДИНЕНИЯ здесь не удалась, так как есть один ко многим, и будет вставлен только первый ряд.

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

Просто нужно второе мнение по логике!

1 Ответ

0 голосов
/ 20 июля 2011

Я протестировал приведенный ниже код, и он соответствует вашим идеальным данным.Но вторая строка Table1 потеряна, поскольку для нее нет соответствующего соответствия в Table2

INSERT INTO Table3
SELECT 
Table1.T1ID AS T3Field1,
Table1.T1Field1 AS T3Field2,
Table2.T2Field3 AS T3Field3,
Table2.T2Field4 AS T3Field4
FROM Table1, Table2
WHERE
Table1.T1ID = Table2.T2field2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...