У меня есть 3 MySQL таблицы MySQL: table1, table2 и table3.
Каждая таблица имеет столбец идентификаторов (ID, ID2, ID3 соответственно) и разные столбцы данных.
Например, таблица1 имеет столбцы [ID, имя, день рождения, статус, ...],
Таблица2 имеет [ID2, Страна, Zip, ...],
Таблица3 имеет [ID3, источник, телефон, ...]
Вы поняли.
Столбцы ID, ID2, ID3 являются общими для всех трех таблиц ... если в table1 есть значение идентификатора, оно также появится в table2 и table3. Количество строк в этих таблицах одинаковое, около 10 м строк в каждой таблице.
Что я хотел бы сделать, это создать новую таблицу, которая содержит (большинство) столбцов всех трех таблиц и объединить их в нее.
Например, даты должны быть конвертированы, потому что сейчас они находятся в формате VARCHAR YYYYMMDD. Читая руководство по MySQL, я подумал, что STR_TO_DATE () справится с этой задачей, но я не знаю, как написать сам запрос, поэтому не знаю, как интегрировать преобразование даты.
Итак, после создания новой таблицы (которую я знаю, как это сделать), как я могу объединить в нее три таблицы, интегрировав в запрос преобразование даты?
Обновление:
Единственное, что мне неясно, это как я могу конвертировать даты в запросе.
Насколько я понимаю, запрос должен выглядеть примерно так:
INSERT INTO [new table]
SELECT table1.ID, table1.Name, table1.Birthday, table2.Country, table3.Phone
FROM table1
INNER JOIN table2 ON table1.ID = table2.ID2
INNER JOIN table3 ON table1.ID = table3.ID3;
... но как я могу конвертировать даты в нем? Или в этом отношении применить любую функцию к полю, прежде чем оно будет вставлено? Например, как я могу преобразовать поле «День рождения» перед тем, как вставить его с помощью STR_TO_DATE ()? Куда я это положу?
STR_TO_DATE(table1.Birthday, '%Y%m%d')
[Ошибка, которую я решил просто заменить "table1.Birthday" на "STR_TO_DATE (table1.Birthday, ...)"? Это правильно?]