есть две таблицы, где могут быть любые данные. без ограничений. в рамках типизации понятно. 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
в общем случае какой запрос вернет больше записей?
20.02.2018 13:01, Kaifa пишет:
> в общем случае какой запрос вернет больше записей?
огласите весь список вопросов, пжлст!
Posted via RSDN NNTP Server 2.1 beta
Здравствуйте, 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 в запросе должен по идее возвращать больше записей.
| Картинка |
| |
| |
T>картинки с пересечением множеств не видел?
T>второй
вот такие вопросы задают на интервью ))) причем ответил как вы, но т.к. right join использую крайне редко, немного засомневался )), он утверждал, что наоборот. хотя какое нахрен наоборот, если в b допустимы null. кстати по остальным вопросам у меня косяков не нашли
Здравствуйте, Kaifa, Вы писали:
K> b — id — foreign key на а
K>K>create table b (id int, someval varchar(100))
K>
Где constraint, спросил у собеседующего?
Здравствуйте, 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, и тогда второй запрос может вернуть больше.
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