Ceci est relatif à mysql query with AND, OR and NOT et aussi mysql has all values j'ai résolu le AND
partie du problème, mais maintenant je dois aussi maintenant pour résoudre le OR
et le NOT
.complexe MySQL rejoint
Juste pour confirmer la déclaration ci-dessous me donne tous les articles qui ont chaque thème 1, 2 et 3
SELECT x.*
FROM Article x INNER JOIN
(SELECT t.article_id, COUNT(t.article_id)
FROM articleTopics t
WHERE t.topic_id IN ('1','2','3')
GROUP BY t.article_id
HAVING COUNT(t.article_id)>=3
ORDER BY COUNT(t.article_id) DESC
LIMIT 0,100) AS ilv
ON x.id=ilv.article_id
Ce que je suis en train de faire est d'ajouter quelque chose à la requête qui exclurait tous les articles qui sont aussi associés aux sujets 4 et 5.: NOT
Je voudrais également ajouter les articles qui ont des sujets 6, ou 7 tant qu'ils correspondent aux contraintes précédentes.
E.g.
SELECT all Articles where the articles has
all the following topics (1,2,3) #AND
AND
none of the following topics (4,5) #NOT
AND
may have any of the following topics(6,7) #OR
J'espère que cela a du sens!
Je ne vois pas le point de chercher 6 & 7 si l'exigence est qu'un article doit d'abord être associé à 1/2/3. Sonne comme ARTICLETOPCS est une table many-to-many, donc tout ce qui touche à 1/2/3 sera sélectionné - y compris ceux avec des liens supplémentaires à 6 et/ou 7. –
de sorte que vous avez besoin d'articles où (sujet dans (1, 2, 3) et non sujet dans (4, 5)) ou sujet dans (6, 7)? – Sam
On dirait qu'une ERD serait utile pour celle-ci ... – Sonny