Mysql Inner Join Issues - PullRequest
       31

Mysql Inner Join Issues

0 голосов
/ 11 ноября 2010

Это дает мне все мои статьи, которые содержат обе упомянутые сущности.

SELECT COUNT(ArticlesEntity.article_id) AS article_count
FROM articles_entities ArticlesEntity 
WHERE ArticlesEntity.entity_id IN ('ENTITY_ID_1','ENTITY_ID_2') 
GROUP BY ArticlesEntity.article_id 
HAVING article_count>=2 

Теперь я хочу добавить в этот запрос что-то, что исключает любую сущность с ENTITY_ID_3.

Я попробовал следующее, но он дал те же результаты:

SELECT COUNT(ArticlesEntity.article_id) AS article_count
FROM articles_entities ArticlesEntity 
WHERE ArticlesEntity.entity_id IN ('ENTITY_ID_1','ENTITY_ID_2') 
AND ArticlesEntity.entity_id NOT IN ('ENTITY_ID_3')
GROUP BY ArticlesEntity.article_id 
HAVING article_count>=2 

Что я пропускаю / делаю неправильно?

Заранее спасибо

Ответы [ 2 ]

1 голос
/ 11 ноября 2010

Попробуйте что-то вроде:

SELECT COUNT(ArticlesEntity.article_id) AS article_count 
FROM articles_entities ArticlesEntity  
WHERE ArticlesEntity.entity_id IN ('ENTITY_ID_1','ENTITY_ID_2')  
    AND NOT EXISTS (
        select 1 
        from articles_entities 
        where article_id = ArticlesEntity.article_id 
            and entity_id = 'ENTITY_ID_3')
GROUP BY ArticlesEntity.article_id  
HAVING article_count>=2  
0 голосов
/ 11 ноября 2010

В вашем запросе должно быть что-то большее, чем то, что вы показываете здесь, потому что из того, что вы показываете в своем вопросе, результаты должны быть идентичны для обоих запросов (Если entity_id равен либо id_1, либо id_2, это уже не равно id_3).

Edit: Извините, только что заметил две вещи. 1) в своем заявлении о проблеме вы сказали, что результаты идентичны (как и ожидалось). 2) в своем заголовке вы говорите «Внутренние проблемы присоединения», но ... у вас нет внутреннего объединения.

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