Другие языки программирования и технологии

Зачем нужен join(sql) и как он работает? Если можно, объясните на пальцах

Зачем нужен join(sql) и как он работает? Если можно, объясните на пальцах. Ссылки на доки не надо, я хочу объяснения и примеры на "пальцах" получить, что бы лучше понять. Заранее спасибо!
Adham Dodarov
Adham Dodarov
131
join нужен для соединения таблиц. Есть, конечно, вариант писать select ...from table1, table2, table3 where (условия соединения + остальные условия) , но join - правильнее с т. з. стандарта ANSI и на самом деле гораздо удобнее.
Например, inner join - это связь таблиц 1 к 1:
select (поля) from table1 t1 [inner] join table2 t2 on t2.sid=t1.uid - жёсткая связка между таблицами. Слово inner не обязательно писать, оно по умолчанию.
outer join бывает left и right (не бывает просто outer). Задаёт нежёсткие связки. select (поля) from table1 t1 left [outer] join table2 t2 on t2.sid=t1.uid выдаст все поля table1. Если есть соединение с table2, то выдаст информацию как в inner join, если нет - поля из table2 будут null. Слово outer не обязательное. Right join поступает с точностью до наоборот: берёт все поля table2, а из table1 по обстоятельствам: нет связка - даём данные, нет связки - null. Full join - это объединение left и right. Т. е. выдаются все данные из обеих таблиц. При отстутствии левой или правой связки данные из несвязанной таблицы будут идти как null.
Cross join - это декартово умножение. Суть - в выдаче всех возможных комбинаций по выбранным столбцам.
Сергей Майборода
Сергей Майборода
47 529
Лучший ответ
Вот смотри - у тебя две таблицы:
Сотрудники два столбца Фамилия Возраст .

Иванов 50
Петров 60
Сидоров 40

А в таблице зарплата два столбца - Фамилия Рубли.

Теперь ты хочешь вывести зарплату по возрасту. Надо объединить две таблицы:

SELECT Сотрудники. Возраст, Зарплата. Рубли FROM Сотрудники INNER JOIN Зарплата ON Сотрудники. Фамилия = Зарплата. Фамилия

Здесь после ON идут условие по которому надо объединять таблицы.
Максим Лыкин
Максим Лыкин
17 300
вот нормальная дока с картинками и тому подобное ...
http://ru.wikipedia.org/wiki/Join_(SQL)
это ж википедия - ее пишут не для программистов а для секретар - так что думаю будет более чем понятно