вопрос по джойнам
От: Kaifa Россия  
Дата: 20.02.18 10:01
Оценка:
есть две таблицы, где могут быть любые данные. без ограничений. в рамках типизации понятно. id в а — первичный ключ, в b — id — foreign key на а

create table a (id int, name varchar(100))
create table b (id int, someval varchar(100))

1) select a.id from a inner join b on b.id = a.id
2) select a.id from a right join b on b.id = a.id


в общем случае какой запрос вернет больше записей?
Re: вопрос по джойнам
От: Alex.Che  
Дата: 20.02.18 10:18
Оценка:
20.02.2018 13:01, Kaifa пишет:
> в общем случае какой запрос вернет больше записей?

огласите весь список вопросов, пжлст!
Posted via RSDN NNTP Server 2.1 beta
Re: вопрос по джойнам
От: Maniacal Россия  
Дата: 20.02.18 10:35
Оценка:
Здравствуйте, Kaifa, Вы писали:

K>есть две таблицы, где могут быть любые данные. без ограничений. в рамках типизации понятно. id в а — первичный ключ, в b — id — foreign key на а


K>
K>create table a (id int, name varchar(100))
K>create table b (id int, someval varchar(100))

K>1) select a.id from a inner join b on b.id = a.id
K>2) select a.id from a right join b on b.id = a.id
K>


K>в общем случае какой запрос вернет больше записей?


Правый join в запросе должен по идее возвращать больше записей.

  Картинка
Отредактировано 20.02.2018 11:11 Maniacal . Предыдущая версия .
Re: вопрос по джойнам
От: torvic Голландия  
Дата: 20.02.18 10:35
Оценка:
Здравствуйте, Kaifa, Вы писали:

картинки с пересечением множеств не видел?
второй
Re[2]: вопрос по джойнам
От: Kaifa Россия  
Дата: 20.02.18 11:03
Оценка:
T>картинки с пересечением множеств не видел?
T>второй

вот такие вопросы задают на интервью ))) причем ответил как вы, но т.к. right join использую крайне редко, немного засомневался )), он утверждал, что наоборот. хотя какое нахрен наоборот, если в b допустимы null. кстати по остальным вопросам у меня косяков не нашли
Re: вопрос по джойнам
От: Mihas  
Дата: 20.02.18 12:45
Оценка: +1
Здравствуйте, Kaifa, Вы писали:

K> b — id — foreign key на а

K>
K>create table b (id int, someval varchar(100))
K>

Где constraint, спросил у собеседующего?
Re: вопрос по джойнам
От: Milena США  
Дата: 20.02.18 20:32
Оценка: -3
Здравствуйте, Kaifa, Вы писали:

K>есть две таблицы, где могут быть любые данные. без ограничений. в рамках типизации понятно. id в а — первичный ключ, в b — id — foreign key на а


K>
K>create table a (id int, name varchar(100))
K>create table b (id int, someval varchar(100))

K>1) select a.id from a inner join b on b.id = a.id
K>2) select a.id from a right join b on b.id = a.id
K>


K>в общем случае какой запрос вернет больше записей?


По идее, если Foreign key сделан правильно, то это constraint, а значит, что будет одинаково, потому что в b.id не может быть значений, отличных от a.id. А вот LEFT JOIN мог бы дать больше значений.
Однако, если constraint нет, то в b.id допустим NULL, и тогда второй запрос может вернуть больше.
Re[2]: вопрос по джойнам
От: bzig  
Дата: 21.02.18 04:13
Оценка: +2
M>По идее, если Foreign key сделан правильно, то это constraint,

FK не запрещает иметь NULL.
Re[2]: вопрос по джойнам
От: Alex.Che  
Дата: 21.02.18 08:50
Оценка:
20.02.2018 23:32, Milena пишет:
> По идее, если Foreign key сделан правильно, то это constraint, а значит, что будет одинаково, потому что в b.id не может быть значений, отличных от a.id. А вот LEFT JOIN мог бы дать больше значений.
> Однако, если constraint нет, то в b.id допустим NULL, и тогда второй запрос может вернуть больше.

BOL в помощь!
чушь какая...
Posted via RSDN NNTP Server 2.1 beta
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.