2017-04-17 73 views
0

也許你可以幫助我。我實際上在ORACLE平臺上學習SQL,我有幾個練習。Oracle SQL SELECT相當於多個AND

其中之一是對我來說很難,我不把它做完吧...

這是鍛鍊; Tibial: 哪個國家的成員是在所有的組織,哪裏還國家XY是成員的?

我有多個表,但我認爲只有一個是必要的這項任務。

表名:isMember(縮寫(FK),國家(FK))

所以表的樣子:

Country /Abbreviation 
    USA / G-5 
    USA / G-7 
    USA / G-9 
    Canada/ G-7 
    Canada/ G-9 
    Norway/ G-20 

等等....

我怎樣才能找到列表中的每個國家也是例如美國所屬的所有組織的成員?

非常感謝!

+0

'哪國的成員在所有的組織,哪裏還國家XY是'。所以,在你的例子中,如果XY Country是USA,那麼其他國家都不應該輸出。它是否正確 ? –

+0

你好Oto,是的,在我的例子中是正確的,沒有哪個國家可以匹配。也許不是最好的例子,但我認爲很清楚。 – eneR

回答

0

這是一個棘手的問題。一種方法是構建與國家和組織在美國是所有行然後,計算每個國家都有數,看它們是否匹配。

select c.country 
from (select distinct country from isMember) c cross join 
    (select abbreviation from isMember where country = 'USA') a left join 
    isMember im 
    on im.country = c.country and im.abbreviation = a.abbreviation 
group by c.country 
having count(*) = count(im.country); -- do all organizations match? 
+0

您好Gordon,我檢查了您發佈的SQL代碼。我認爲它沒有像預期的那樣工作。我總是隻能找到與之相比的國家。以您的代碼爲例,美國。 – eneR

+0

@eneR。 。 。在你的樣本數據中,沒有一個國家是美國所有組織的成員。因此,只有獲得美國纔是不足爲奇的。 –