Другие языки программирования и технологии
Зачем нужен join(sql) и как он работает? Если можно, объясните на пальцах
Зачем нужен join(sql) и как он работает? Если можно, объясните на пальцах. Ссылки на доки не надо, я хочу объяснения и примеры на "пальцах" получить, что бы лучше понять. Заранее спасибо!
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 - это декартово умножение. Суть - в выдаче всех возможных комбинаций по выбранным столбцам.
Например, 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 - это декартово умножение. Суть - в выдаче всех возможных комбинаций по выбранным столбцам.
Вот смотри - у тебя две таблицы:
Сотрудники два столбца Фамилия Возраст .
Иванов 50
Петров 60
Сидоров 40
А в таблице зарплата два столбца - Фамилия Рубли.
Теперь ты хочешь вывести зарплату по возрасту. Надо объединить две таблицы:
SELECT Сотрудники. Возраст, Зарплата. Рубли FROM Сотрудники INNER JOIN Зарплата ON Сотрудники. Фамилия = Зарплата. Фамилия
Здесь после ON идут условие по которому надо объединять таблицы.
Сотрудники два столбца Фамилия Возраст .
Иванов 50
Петров 60
Сидоров 40
А в таблице зарплата два столбца - Фамилия Рубли.
Теперь ты хочешь вывести зарплату по возрасту. Надо объединить две таблицы:
SELECT Сотрудники. Возраст, Зарплата. Рубли FROM Сотрудники INNER JOIN Зарплата ON Сотрудники. Фамилия = Зарплата. Фамилия
Здесь после ON идут условие по которому надо объединять таблицы.
вот нормальная дока с картинками и тому подобное ...
http://ru.wikipedia.org/wiki/Join_(SQL)
это ж википедия - ее пишут не для программистов а для секретар - так что думаю будет более чем понятно
http://ru.wikipedia.org/wiki/Join_(SQL)
это ж википедия - ее пишут не для программистов а для секретар - так что думаю будет более чем понятно
Похожие вопросы
- Срочно нужен программист, способный "чайнику" объяснить на пальцах...
- Логические операторы в Python 3 - объясните на пальцах?
- Изучаю C# не понимаю как работает оператор for объясните плиз!
- В Delphi не работает SQL запрос.
- Люди, знающие SQL, помогите сделать запрос.
- SQL (какие ?)
- Объясните тему Циклы, а пальцах? C++
- Что лучше "SELECT поля FROM таблица LEFT JOIN таблица ON условие" или...."SELECT поля FROM таблица1, таблица2 WHERE"
- t-sql (курсоры и циклы - взаимозаменяемы?)
- Перечень допустимых функций в SQL-запросе ADO Jet 4.0 (MS Access)