2010-11-11 6 views
0

Cela me donne tous mes articles qui contiennent les deux entités mentionnées.Mysql Inner Join Issues

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 

Je veux maintenant ajouter quelque chose à cette requête qui exclut toute entité qui a 'ENTITY_ID_3'.

J'ai essayé les éléments suivants, mais il est revenu le même résultat:

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 

Qu'est-ce que je manque/faire le mal?

Merci à l'avance

+0

Y at-il des raisons d'utiliser un alias de table si elle est la seule table que vous utilisez? – Danosaure

Répondre

1

Essayez quelque chose comme:

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

Il doit y avoir plus à votre requête que ce que vous montrez ici, parce que de ce que vous faites preuve dans votre question, les résultats doivent être identiques pour les deux requêtes (Si entity_id est égal soit id_1 ou id_2, ce n'est déjà pas égal à id_3).

Editer: Désolé, juste remarqué deux choses. 1) dans votre énoncé de problème, vous avez dit que les résultats sont identiques (comme prévu). 2) dans votre titre, vous dites "Inner Join Issues", mais ... vous n'avez pas de jointure interne.