2014-10-25 6 views
0

У меня есть 3 таблицы в базе данных MySQL. Таблица t1 и t2 имеют одинаковые строки и имеют общее поле X. Таблица t3 имеет меньшее количество строк и разделяет общее поле с таблицей t1, например поле Z. Все строки из таблицы t3 имеют соответствующую строку в обе таблицы t1 и t2 (но поле Z делится только с таблицей t1)Как объединить 3 таблицы в MySQL?

То, что я хочу, это запрос, который свяжет эти таблицы и выводит таблицу со всеми столбцами из каждой таблицы, а ВСЕ строки из таблицы t1 (в этом случае t2 также потому, что все строки соответствуют).

У меня есть это утверждение из предыдущего вопроса, который эффективно связывает таблицы t1 и t3 и выводит все строки из таблицы t1 вместе с столбцами в t3.

SELECT t1.*, 
     t3.* 
    FROM t1 
    LEFT JOIN t3 
    ON t1.X = t3.Z 

Но теперь мне также необходимо включить все столбцы из t2. Как мне это сделать? (надеюсь, что это имеет смысл ...)

спасибо.

+2

Я смущен. Если таблицы 1 и 2 "* имеют одинаковые одинаковые строки *", означает ли это, что они имеют одинаковый набор полей? Я думаю, вам будет лучше, предоставив образцы данных и ожидаемый результат. –

ответ

0
SELECT t1.*, t2.*, t3.* 
FROM t1 
JOIN t2 ON t1.X = t2.X 
LEFT JOIN t3 ON t1.X = t3.Z 
+0

Почему вы сначала выполняете 'JOIN', а затем' LEFT JOIN'? Спасибо – oaklander114

+0

'LEFT JOIN' используется, когда в таблице, с которой вы соединяетесь, могут не совпадать строки. Поскольку 't1' и' t2' имеют одинаковые строки, нет необходимости использовать 'LEFT JOIN' для' t2'. По умолчанию 'INNER JOIN' более эффективен. – Barmar

Смежные вопросы