Вопрос № 53985: Здравствуйте, ув. эксперты!
Помогите понять смысл и работу JOIN в запросе SELECT.
Я прочел о нем в доке по MySQL, смотрел на результат запроса, но понятьне могу. В чем его смысл, когда применять?
Буду признателен за Вашу помощь!...
Вопрос № 53.985
Здравствуйте, ув. эксперты!
Помогите понять смысл и работу JOIN в запросе SELECT.
Я прочел о нем в доке по MySQL, смотрел на результат запроса, но понятьне могу. В чем его смысл, когда применять?
Буду признателен за Вашу помощь!
Отправлен: 01.09.2006, 13:56
Вопрос задал: Mik (статус: Посетитель)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Карпов Алексей
Здравствуйте, Mik!
Join сам по себе является оператором связывания двух таблиц по условию.
Существует 5 типов связывания
INNER JOIN, LEFT OUTER JOIN, RIGHT OUTER JOIN, FULL OUTER JOIN и CROSS JOIN.
Слова INNER и OUTER можно опускать. таким образом INNER JOIN и JOIN это один и тот же оператор,только по разному записанный. А LEFT JOIN это сокращенная форма LEFT OUTER JOIN
Вариант №1 INNER JOIN.
INNER JOIN работает следующим образом.
Осуществляется выбор всех комбинаций записей из первой таблицы с записями из второй таблицы. После чего проверяется условие написанное в операторе ON, если условие выполняется, то тогда в результирующий набор добавляется запись состоящая из соединенных записей из первой и второй таблицы. Если же условие не выполняется, то тогда в результирующих набор данных ничего не добавляется.
Используется когда необходимо получить данные которые есть в обеих таблицах.
Вариант №2 LEFT OUTER JOIN.
Осуществляется выбор всех комбинаций записей из первой таблицы с записями из второй таблицы. После чего проверяется условие написанное в операторе ON, если условие выполняется, то тогда в результирующий набор добавляется запись состоящая из соединенных записей из первой и второй таблицы. Если же условие не выполняется, то тогда в результирующих набор данных добавляется запись состоящая из записи таблицы стоящеей левее оператор JOIN + вместо данных из второй таблицы строка содержащая в всех полях NULL.
Ответ отправил: Карпов Алексей (статус: 2-ой класс)
Ответ отправлен: 01.09.2006, 14:06
Отвечает: Santana
Здравствуйте, Mik!
Обединяет две и более таблицы по значению полей. самый простой вариант джойна
where tabl1.field1 = tabl2.field2
Выбирает из обоих таблиц записи при которых соблюдается указанное условие
Ответ отправил: Santana (статус: 6-ой класс)
Ответ отправлен: 01.09.2006, 14:10
Отвечает: Игорь Елизаров
Здравствуйте, Mik!
допустим, есть две таблицы
список городов
Москва
Питер
Смоленск
и список родственников с городами
Москва , тетя
Свердловск , дядя
Питер , сестра
тогда при связывании этих таблиц по inner join (связываем по городу
получим только записи, у которых города совпадают,
то есть
москва , тетя
Питер , сестра
При связывании по Left join получаем все записи первой таблицы, ну и по возможности, родственников..
Москва , тетя
Питер , сестра
Смоленск , NULL (то есть во второй таблице нету соответствующей записи)
Ответ отправил: Игорь Елизаров (статус: 5-ый класс)
Ответ отправлен: 01.09.2006, 16:22