Вы можете создать Child_Table
с помощью оператора CREATE ... SELECT
. Вам нужно JOIN
от Parent_Table
до Master_Table
дважды, один раз, чтобы получить данные матери, и один раз, чтобы получить данные отца. Обратите внимание, что вы должны использовать синтаксис соединения ANSI, объединения запятых давно заменены.
CREATE TABLE Child_Table AS
SELECT m1.Proper_ID AS Mother_ID,
m1.Proper_Name AS Mother_Name,
m2.Proper_ID AS Father_ID,
m2.Proper_Name AS Father_Name
FROM Parent_Table p
JOIN Master_Table m1 ON SUBSTRING_INDEX(m1.Proper_ID, '_', -1) = p.M_ID
JOIN Master_Table m2 ON SUBSTRING_INDEX(m2.Proper_ID, '_', -1) = p.F_ID
Тогда вы можете
SELECT *
FROM Child_Table
Вывод:
Mother_ID Mother_Name Father_ID Father_Name
KWH_631 Price Maxwell DEA_124 Howard Kelly
ABC_235 Pansy Montgomery FAE_832 Best Mcpherson
Демонстрация по SQLFiddle
Если вы только Если вы хотите сгенерировать одну строку для данной пары значений M_ID
и F_ID
, вы можете поместить индекс UNIQUE
в Mother_ID, Father_ID
в Child_Table
в операторе CREATE
, а затем либо IGNORE
дублировать, либо REPLACE
их:
CREATE TABLE Child_Table (UNIQUE(Mother_ID, Father_ID)) IGNORE
... -- as above
Демонстрация по SQLFiddle