MySQL объединяет 3 таблицы с 2 общими атрибутами - PullRequest
3 голосов
/ 26 января 2012

У меня есть 3 таблицы со следующей структурой:

TABLE_A:

  • Date, ID, A1, A2.

TABLE_B:

  • Date, ID, B1.

Table_C:

  • Date, ID, C1, C2, C3.

Я хочу объединить все три в таблицу с атрибутами: Date, ID, A1, A2, B1, C1, C2, C3.

Для 3 таблиц некоторые Даты и идентификаторы одинаковы, но некоторые не совпадают, поэтому я хочу сделать что-то вроде LEFT JOIN с UNION, а затем RIGHT JOIN, чтобы я не потерял ни одного из Дата и идентификатор строки. Похоже, мне нужны комбинации Date и ID, чтобы получить их собственные уникальные идентификаторы, чтобы я мог затем присоединиться к таблицам, но я столкнулся с препятствием.

1 Ответ

2 голосов
/ 26 января 2012

Вы можете попробовать это:

SELECT Date, ID, A1, A2, B1, C1, C2, C3
FROM (
    SELECT Date, ID
    FROM Table_A
    UNION
    SELECT Date, ID
    FROM Table_B
    UNION
    SELECT Date, ID
    FROM Table_B
) d
LEFT JOIN Table_A a on (d.Date=a.Date and d.ID=a.ID)
LEFT JOIN Table_B b on (d.Date=b.Date and d.ID=b.ID)
LEFT JOIN Table_C c on (d.Date=c.Date and d.ID=c.ID)

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

...