Соединение двух таблиц - PullRequest
       3

Соединение двух таблиц

0 голосов
/ 03 октября 2011

Я новичок и у меня возникли проблемы с соединением двух таблиц.table1: (topicID, questionID) где topicID является первичным ключом.Для каждого topicID есть много questionID.

Теперь у меня есть таблица2 с QuestioID, и я хочу получить все эти topicID из table1, которые имеют по крайней мере одну запись для каждого questionID в table2.

Буду признателен за любую помощь.

create table table1(
    topicID int,
    questionid int)
create table table2
(
    questionid int
)
insert into table1
select 1,1
union all
select 2,1
union all
select 2,2
union all
select 2,4
union all
select 1,2
union all
select 1,6

insert into table2 
select 1
union all
select 2
union all
select 6

При использовании таблиц table1 и table2, приведенных выше, запрос должен вернуть topicID как 2, так как только он имеет по крайней мере одну запись для каждого ID вопроса в table2.

Спасибо

Ответы [ 2 ]

4 голосов
/ 04 октября 2011
SELECT topicID
    FROM table1
    GROUP BY topicID
    HAVING COUNT(DISTINCT questionid) = (SELECT COUNT(*) FROM table2)
0 голосов
/ 04 октября 2011

Требуемый вам оператор связи - деление , широко известный как «поставщик, поставляющий все детали» .

Поскольку в ваших спецификациях указано «хотя бы одна запись для каждого ID вопроса», я думаю, вы должны рассмотреть деление с остатком .

p.s. это не тема, которую вы найдете «на странице 1 практически любой ссылки на SQL», скорее это один из самых неясных реляционных операторов!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...