За последние 24 часа нас посетили 17086 программистов и 1302 робота. Сейчас ищут 1811 программистов ...

Конструкция INNER (LEFT RIGHT) JOIN

Тема в разделе "MySQL", создана пользователем kekcius, 10 дек 2006.

  1. kekcius

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

    С нами с:
    16 сен 2006
    Сообщения:
    3
    Симпатии:
    0
    Никак не могу разобраться, зачем конкретно нужна конструкция LEFT (RIGHT и INNER) JOIN в SELECT'e?

    Почему в следующем примере используется условия
    ON table1.id=table2.id
    и WHERE table2.id IS NULL ?
    Нельзя ли JOIN перенести в WHERE?

    mysql> SELECT table1.* FROM table1
    LEFT JOIN table2 ON table1.id=table2.id
    WHERE table2.id IS NULL;
    Этот пример находит все строки в таблице table1 с величиной id, которая не присутствует в таблице table2 (т.е. все строки в table1, для которых нет соответствующих строк в table2). Конечно, это предполагает, что table2.id объявлен как NOT NULL.


    Кто может "на пальцах" объяснить кто же такой этот JOIN?

    Почему в синтаксисе SQL можно написать «SELECT * FROM table1, table2» (INNER JOIN), но нельзя написать «SELECT * FROM table1 LEFT JOIN table2»? (При этом допустим запрос: «SELECT * FROM table1 LEFT JOIN table2 ON table1.a = table2.b»)
     
  2. Davil

    Davil Guest

    Мануал...
    http://www.mysql.ru/docs/man/JOIN.html
     
  3. draak

    draak Guest

    в join-e можешь прописать не обязательные связки. Тоесть если связка есть он получит и поля связанной таблице нет, то просто получит не все.