2015-07-19 69 views
1

我有以下设置:SQL关键字JOIN - 多重选择

  1. 1台新闻,每个新闻项目都有类别
  2. 1类别表,例如“汽车”和“船”
  3. 1表进行分类

连接消息现在生病了类别的数组,和虐待想显示从表1中(例如新闻)的项目适合于所有类别。因此,如果生病了ID 35和ID 36,连接表中必须有两个ID的条目。

例如:

SELECT * 
FROM inserate 
INNER JOIN rubrikenZuordnungen ON inserate.ID = rubrikenZuordnungen.InseratID 
WHERE 
    (rubrikenZuordnungen.RubrikID = 35) AND 
    (rubrikenZuordnungen.RubrikID = 36) 
    OFFSET 10 ROWS 
    FETCH NEXT 20 ROWS ONLY 

如果我使用,它不工作,因为我只得到1的结果为rubrikenZuordnungen

任何人都可以帮我吗?提前致谢。

+0

这应该返回0行。任何一行都不可能满足这两个条件。 –

+0

是的,我知道,这就是为什么我问 - 但没有SQL方法来解决这个问题吗? – derdida

回答

2

这是一种方法。

SELECT * 
FROM inserate 
WHERE ID IN 
(
SELECT InseratID 
FROM rubrikenZuordnungen 
WHERE RubrikID IN (35,36) 
GROUP BY InseratID 
HAVING COUNT(DISTINCT RubrikID)=2 
) 
+0

谢谢!很棒 – derdida