powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / INNER JOIN
9 сообщений из 9, страница 1 из 1
INNER JOIN
    #40110394
Morskoi_kotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите, пожалуйста! Вот возник такой банальный вопрос в голове.

Есть например одна таблица в которой один столбец, пять строк и в каждой строке цифра 5. И есть вторая точно такая же таблица. Какой результат получится если выполнить INNER JOIN ? Сколько строк получится в результате выполнения запроса?
...
Рейтинг: 0 / 0
INNER JOIN
    #40110396
Oleg_SQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Morskoi_kotik,

Код: sql
1.
2.
3.
DECLARE @t TABLE(ID INT);
INSERT INTO @t VALUES (5), (5), (5), (5), (5);
SELECT * FROM @t AS a INNER JOIN @t AS b ON a.id = b.id;



количество букв в вашем вопросе больше чем сам запрос....
...
Рейтинг: 0 / 0
INNER JOIN
    #40110422
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
– Любопытно бы знать, – сказал философ, – если бы, примером, эту брику нагрузить каким-нибудь товаром – положим, солью или железными клинами: сколько потребовалось бы тогда коней?
– Да, – сказал, помолчав, сидевший на облучке козак, – достаточное бы число потребовалось коней.
...
Рейтинг: 0 / 0
INNER JOIN
    #40110546
Morskoi_kotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Oleg_SQL
Morskoi_kotik,

Код: sql
1.
2.
3.
DECLARE @t TABLE(ID INT);
INSERT INTO @t VALUES (5), (5), (5), (5), (5);
SELECT * FROM @t AS a INNER JOIN @t AS b ON a.id = b.id;



количество букв в вашем вопросе больше чем сам запрос....


Прикольно) я и не знал, что в переменную можно вложить таблицу) буду знать теперь)

Получится 25 строк....

По сути вопроса, я че-то не могу сообразить как это происходит технически внутри СУБД.

Вот с LEFT JOIN понятно. К левой таблице присоединяются все строки, которые соответствуют в правой (получается тоже 25 строк). т.е. пять раз по пять.

А вот с INNER JOIN че-то непонятно. Это понятно на сухих простых примерах в интернете, что СУБД выведет все строки, которые совпадают. А вот тут, когда равное количество одинаковых строк. Как он начинает соединять. Вот буквально. Берет значение из какой таблицы и как начинает сканировать совпадения?
...
Рейтинг: 0 / 0
INNER JOIN
    #40110565
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Morskoi_kotik

Вот с LEFT JOIN понятно.

Вот тут я выпал в осадок, INNER JOIN от LEFT JOIN не отличаются за исключением ....

как работает INNER JOIN
Morskoi_kotik

К левой таблице присоединяются все строки, которые соответствуют в правой (получается тоже 25 строк). т.е. пять раз по пять.


ЗЫЖ возможно он поменяет таблицы местами, если в правой будет меньше записей, но смысл от этого не меняется
...
Рейтинг: 0 / 0
INNER JOIN
    #40110841
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Morskoi_kotik
По сути вопроса, я че-то не могу сообразить как это происходит технически внутри СУБД.
Вас интересует реализация, или семантика операции JOIN?

Если первое, то это большая тема, и механизм зависит от многих факторов. Например: "Берет значение из первой таблицы и начинает сканировать вторую на совпадения". И много других вариантов.

Если интересует второе, то в результате получится от 0 до 25 строк, в зависимости от данных в таблице, и от условий соединения.
...
Рейтинг: 0 / 0
INNER JOIN
    #40111434
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
INNER JOIN
    #40111460
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HandKot
INNER JOIN от LEFT JOIN не отличаются

Что-то меня тоже на лирику потянуло...

INNER JOIN
В детском саду мальчики берут за руку девочку фамилия которой совпадает (с учётом рода) с фамилией мальчика.
Пускают гулять только полные пары

LEFT JOIN
В детском саду мальчики берут за руку девочку фамилия которой совпадает с фамилией мальчика.
Пускают гулять всех мальчиков, без разницы нашли они себе пару или нет.

RIGTH JOIN
То же самое, только мальчики и девочки поменялись местами.
Пускают гулять всех девочек, без разницы нашли они себе пару или нет.

FULL JOIN
Пускают гулять вообще всех - мальчиков, и девочек, и пары и одиночек.

Возвращаясь к вашей задаче - в садике 5 мальчиков Ивановых и 5 девочек Ивановых.
Сколько раз они смогут выйти на прогулку не повторяясь хоть в одной паре?

P.S. Для вашей задачи все JOIN равноценны, но это не значит, что они не отличаются.
...
Рейтинг: 0 / 0
INNER JOIN
    #40111656
SergiiW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SQL2008,

такого описания я еще не видел. 5+
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / INNER JOIN
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]