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

Есть например одна таблица в которой один столбец, пять строк и в каждой строке цифра 5. И есть вторая точно такая же таблица. Какой результат получится если выполнить INNER JOIN ? Сколько строк получится в результате выполнения запроса?
...
Рейтинг: 0 / 0
09.11.2021, 17:32
    #40110396
Oleg_SQL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
INNER JOIN
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
09.11.2021, 18:32
    #40110422
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
INNER JOIN
– Любопытно бы знать, – сказал философ, – если бы, примером, эту брику нагрузить каким-нибудь товаром – положим, солью или железными клинами: сколько потребовалось бы тогда коней?
– Да, – сказал, помолчав, сидевший на облучке козак, – достаточное бы число потребовалось коней.
...
Рейтинг: 0 / 0
10.11.2021, 09:54
    #40110546
Morskoi_kotik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
INNER JOIN
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
10.11.2021, 10:22
    #40110565
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
INNER JOIN
Morskoi_kotik

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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


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