SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 20.04.2011 00:27:03

simple
Активист
Зарегистрирован: 25.11.2010
Сообщений: 168

LEFT и RIGHT JOIN

Объясните мне чайнику на пальцах пожалуйста если не затруднит, чем они отличаются, и когда лучше применять LEFT или RIGHT в запросе. Я так понимаю что при LEFT запросе идет поиск по левому краю таблице, а при RIGHT по правому, это как таблица просто делиться на две равные части что ли тогда? И если поиск в таблице ведется по индексам которые находятся в левой части то нужно применять LEFT JOIN, я правильно понимаю это все или нет?

Неактивен

 

#2 20.04.2011 17:15:43

ehill
Участник
Зарегистрирован: 23.03.2011
Сообщений: 10

Re: LEFT и RIGHT JOIN

JOIN объединяет несколько таблиц. Либо одну таблицу саму с сабой.
Левое объединение tb1 LEFT JOIN tb2 в результирующую таблицу позволяет включить  строки "левой" таблицы tb1, которым не нашлось соответствия в "правой" таблице  tb2.

Неактивен

 

#3 20.04.2011 21:46:03

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: LEFT и RIGHT JOIN

Угу. Лучше всего использовать внутреннее (INNER) объединение таблиц.
Что касается внешних объединений, то они полностью эквивалентны. То
есть эквивалентны следующие запросы:

SELECT ... FROM a LEFT JOIN b ON a.fa = b.fb ...
и
SELECT ... FROM b RIGHT JOIN a ON a.fa = b.fb ...


UPD: А самого главного не написал, зачем всё это нужно smile

Таблица food:
id | name
---------
1  | капуста
2  | морковка

Таблица menu
id | food
---------
1  | 1
2  | 2
3  | 3

SELECT * FROM food f JOIN menu m ON f.id = m.food // -- выдаст две строки, т.к. food=3 нет
SELECT * FROM food f RIGHT JOIN menu m ON f.id = m.food // -- выдаст три строки (т.е. все из правой — m — таблицы, и то, что найдет совпадающее в левой)

Неактивен

 

#4 21.04.2011 00:05:28

simple
Активист
Зарегистрирован: 25.11.2010
Сообщений: 168

Re: LEFT и RIGHT JOIN

Всем спасибо за ответы

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson