2011-10-03 97 views
-1

我是一個新手,在加入兩張表時遇到了一些麻煩。 table1 :(topicID,questionID)其中topicID是主鍵。對於每個topicID,都有很多questionID。加入兩張表

現在,我有一個table2與questioIDs,我想從表1中獲得所有這些topicID的每個questionID至少有一個條目。

我將不勝感激任何幫助。

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 

使用Table 1和Table上面,查詢應該返回topicID爲2因爲只有這樣才能對每個questionID在表2 ATLEAST一個條目。

感謝

+4

Stackoverflow不是問幾乎任何SQL引用的第一頁的地方。 – JNK

+2

下次我會確保我只問那些「別人」認爲是一個問題的問題。 – Ratan

+1

只要做一些盡職調查。 SQL中非常非常基本的功能是非常常見的,對於任何曾經看到它們的人來說都是無用的。 SO的目的是爲如何解決問題提供檔案資源。這沒有增加任何價值。 – JNK

回答

4
SELECT topicID 
    FROM table1 
    GROUP BY topicID 
    HAVING COUNT(DISTINCT questionid) = (SELECT COUNT(*) FROM table2) 
+2

唯一正確的查詢。休息一切只是試圖回答一個問題,但沒有正確閱讀。 – Ratan

+0

儘管查詢提供了正確的結果,但如果計數相同,但它們是不同的questionID。那麼結果將不正確? – Ratan

+0

@Ratan:這就是我計算* DISTINCT * questionid值的原因。 –