Aide requête SQL: item n'appartenant pas à une catégorie [Résolu] - SQL/NoSQL - Programmation
Marsh Posté le 24-01-2008 à 17:32:31
a la bourrin avec un distinct + not exits:
Code :
|
Marsh Posté le 24-01-2008 à 17:59:29
Rhaa le NOT EXISTS, tellement longtemps que je l'ai plus utilisé, que je l'ai oublié celui-là, merci beaucoup !
Le temps d'adapter ça à mes requêtes nettement plus trash, et ça devrait remplir exactement ce que je cherche,
merci encore
*Edit* : YEAH ça marche ! tu rox anapajari merci bcp !
Marsh Posté le 24-01-2008 à 17:06:18
Bonjour tous,
Ce que je cherche ici, je peux déjà l'obtenir avec des scripts (PHP, etc.) mais je voudrais dans la mesure du possible essayer de l'avoir en une seule requête SQL (aucun problème si celle-ci comporte des requêtes imbriquées) :
Voici la structure des tables (simplifiée pour l'explication) :
items
- ID_item
- label
categories2items
- ID_item
- ID_category
categories
- ID_category
- label
- flag
Situation classique: relation n-n entre items et catégories. "flag" peut être à 0 ou 1.
Je voudrais une liste d'items qui, parmi leurs catégories (et ils peuvent en avoir aucune ou plusieurs, donc), n'en aient AUCUNE qui soit flaggée "1".
Exemple :
Item A : catégories 1 - 2 - 3
Item B : catégories 1 - 3 - 4
Item C : pas de catégories
Item D : catégories 1 - 2 - 5
La catégorie 2 est flaggée 1
Je veux donc les items B et C
me donne tous les items, avec s'ils en ont une, une catégorie pourvu que celle-ci ne soit pas flaggée 1 (j'emploi des outer joins pour prendre les items qui n'ont aucune catégorie).
Deux problèmes :
- Si un item a disons 2 catégories, et que l'une d'elles n'est pas flaggée 1, eh bien l'item est quand même pris
- Un même item apparaîtra autant de fois dans la liste qu'il a de catégories, je voudrais que mon check se résume à savoir si PARMI les catégories, l'une d'elle est flaggé, si oui on prend l'item, si non on le le prend pas. Il ne devrait donc apparaître que une seule fois dans le record set.
Voilà je cale un peu, je suppute que cela doit être possible en une requête ... cela m'aiderait énormément !
Message édité par ZeBix le 24-01-2008 à 17:59:43