За последние 24 часа нас посетили 17473 программиста и 1721 робот. Сейчас ищет 1591 программист ...

В чем разница между INNER JOIN, RIGHT JOIN, LEFT JOIN ?

Тема в разделе "PHP и базы данных", создана пользователем Max, 4 июн 2006.

  1. Max

    Max Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    18
    Симпатии:
    0
    Адрес:
    Lviv UA
    Здраствуйте!
    Я всегда при работе с MySQL использовал простие запросы, если надо было сделать какую-то сложную выборку то делал это двумя-тремя запросами.

    Но вот иногда все же понимаю что некоторые вещи можно легко осуществить одним запросом с тем же LEFT JOIN, но не до конца понимаю как он работает, и главное в чем его отличие от например INNER JOIN, RIGHT JOIN, CROSS JOIN, просто JOIN и других из мануала (http://php.ru/mysql/reference.html#join).

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

    Обясните пожалуста.
     
  2. olo

    olo Активный пользователь

    С нами с:
    28 апр 2006
    Сообщения:
    272
    Симпатии:
    0
    А между тем там довольно ясно сказано что есть собсно две группы объединений, условно inner и left. INNER JOIN, STRAIGHT JOIN, CROSS JOIN, перечисление таблиц через запятую к каждой строке из первой таблицы подключает все строки второй, т.е. берет все возможные комбинации. При использовании ON или USING если для первой таблицы нет соответствий во второй, то строка не берется. В отличие от этого, при LEFT JOIN, RIGHT JOIN, NATURAL JOIN при отсутствии соответствия делают строку, где вместо всех полей второй таблицы пишется NULL
    Вариации операторов внутри групп незначительны, многие из них сделаны только для совместимости
     
  3. Goryn

    Goryn Активный пользователь

    С нами с:
    4 апр 2006
    Сообщения:
    398
    Симпатии:
    0
    Адрес:
    Ярославль
    PL\SQL рулез, а все INNER-ы это от мелкософта, даздравствует ORACLE и PL\SQL!!!