2014-11-30 5 views
3

Я получил этот вопрос в одном из интервью, в котором спрашивали о левом и правом соединениях в Mysql.Mysql Left Vs. Right Outer Join

Зачем нам нужно левое соединение, когда есть уже правильное и наоборот?

Объяснение: -

SELECT * FROM users LEFT JOIN profile ON (users.user_id= profile.user_id); 

Это приведет это все соответствующие данные профиля таблицы и все данные таблицы пользователей. Теперь я делаю то же самое, используя ПРАВИЛЬНОЕ СОЕДИНЕНИЕ.

SELECT * FROM profile RIGHT JOIN users ON(profile.user_id = users.user_id) 

Это также будет иметь тот же результат, как и в приведенном выше запросе то есть то, что я сделал здесь переместил левую таблицу направо и сделал присоединиться слева направо таблицы.

Теперь, когда я могу выполнить это, используя левый Join, а также я могу сделать то же самое, используя правую Join. Есть ли необходимость в обоих соединениях, или мы можем делать все, используя один JOIN только влево или вправо.

Буду очень благодарен за помощь всем, кто знает и может объяснить мне то же самое.

Заранее спасибо.

+0

Комбинация левого и правого соединений приводит к полному внешнему соединению, где нет фильтрации ... Вы должны провести некоторое исследование. Есть тонны вопросов об этом уже –

+0

Возможный дубликат [В чем разница между INNER JOIN, LEFT JOIN, RIGHT JOIN и FULL JOIN?] (Http://stackoverflow.com/questions/5706437/whats-the-difference-between- inner-join-left-join-right-join-and-full-join) –

+6

Это не его вопрос. Его вопрос заключается в том, почему нам нужно правое соединение, когда левое соединение достаточно само по себе. – Sebas

ответ

0

Причина, по которой нам нужно как правое, так и левое соединение, состоит в том, что оба являются инструментами для управления/анализа данных. Чем больше инструментов, тем лучше и проще.

Иногда, в зависимости от проекта или проблемы, вы можете иметь огромную серию инструкций, которые легче понять или написать с помощью той или иной инструкции.

Например, попробуйте перефразировать это предложение, используя только вправо или влево

SELECT (lotsOfFields ...) FROM myTable 
    INNER JOIN table1 on (moreFields) 
    ... 
    INNER JOIN table2 on (evenMoreFields) 
    ... 
    RIGHT JOIN table66 on (omgSoManyFields) 
    ... 
    LEFT JOIN table99 on (really?Fields) 
    ... 
    INNER JOIN table120 on (lulzFields) 

Любопытное бесполезен, если он уже работает, как это, не так ли?

То же самое происходит и с> и < операторов + и -, несколько логических операторов и т.д.

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