Mysql exclure double critère - SQL/NoSQL - Programmation
Marsh Posté le 14-01-2015 à 10:45:56
Je comprends pas, c'est quoi ta combinaison ? 
 
Donne nous la composition de ta table et ce que tu attends comme résultat ? 
 
Marsh Posté le 14-01-2015 à 11:19:49
Déjà, on pourrait étrange de trouver les critères dans la table alors que le couple client/prix semble dépendre d'une relation 1-n concernant les critères  
 
 
En tout cas, par rapport à ce que tu demandes et expliques, ta requête est correcte et fait ce que tu veux.
Marsh Posté le 14-01-2015 à 14:18:44
| antac a écrit : Je comprends pas, c'est quoi ta combinaison ?  | 
 
La en l’occurrence si c'est AAA ET DDD je le prend pas, par contre si c'étais AAA ET FFF je l'aurais pris.  
 
| rufo a écrit : Déjà, on pourrait étrange de trouver les critères dans la table alors que le couple client/prix semble dépendre d'une relation 1-n concernant les critères  | 
 
Oui j'ai pas détaillé, c'est une table de facturation en fait   
  
L'id c'est le numéro de facture, en fait la requête et la table sont beaucoup plus grosse , moi je veux juste rajouter ma condition pour exclure certaines combinaison du calcul.  
 
Merci de confirmer la procédure, d'expérience je sais que mon cerveau fait un blocage la dessus.  
Marsh Posté le 14-01-2015 à 14:31:31
| stefaninho a écrit :   | 
 
 
| stefaninho a écrit :   | 
 
 
Ce que tu as marqué dans ta requête c'est : 
Il faut que crit1='XXX' 
Il faut que crit2 soit différent de AAA et de BBB 
il faut que crit3 soit différent de CCC et de DDD 
 
Crit1,Crit2 et Crit3 sont des restrictions indépendantes l'une de l'autre dans ta requête. 
 
Je vois pas trop ce que tu veux faire
Marsh Posté le 14-01-2015 à 14:32:36
Même avec les parenthèses ?  
 
Du coup quelle est la bonne syntaxe? 
Marsh Posté le 14-01-2015 à 14:44:25
| stefaninho a écrit :   | 
 
Alors dans ce cas, ta requête ne marche pas. Fais une table de vérité pour trouver la bonne équation logique 
Marsh Posté le 14-01-2015 à 14:45:01
| stefaninho a écrit : Même avec les parenthèses ?   | 
 
C'est pas un pb de syntaxe SQL mais de logique (et pas qu'un pb de parenthèses).
Marsh Posté le 14-01-2015 à 16:21:27
Je sais Rufo, crois bien que j'y met de la bonne volonté c'est pas la première fois que j'ai ce problème, mais ça veut pas.   
  
 
Du coup j'ai quand même relu ça : 
http://fr.wikipedia.org/wiki/Table_de_v%C3%A9rit%C3%A9 
 
Mais y'a pas, je comprend pas.   
 
Marsh Posté le 14-01-2015 à 16:28:51
Tu fait un tableau avec tes trois paramètres : crit1, crit2 et crit3 
Puis tu fais varier les valeurs de ces 3 critères pour savoir si c'est bon ou pas en fonction des valeurs. 
 
Par exemple 
 
Crit1 crit2 Crit3 Res 
AAA BBB CCC OK 
AAA CCC CCC Pas OK 
AAA DDD CCC Pas OK 
BBB AAA BBB OK 
BBB CCC DDD OK 
... 
 
Faut prendre tous les cas possibles... Parceque là tu es pas clair du tout 
 
Marsh Posté le 14-01-2015 à 16:49:52
Je vais essayer de te faire un énoncé plus clair.  
 
Numéro facture | client | montant | categorie du client | categorie du produit 
 
Je veux le montant total en excluant les categorie de produit 001 , 002 chez les categorie de client ZZZ, YYY  
 
Edith : J'aurais pas du prendre le l'alpha pour les deux critères ca prete à confusion en effet donc mon tableau :  
 
001 ZZZ exclu 
001 YYY exclu 
001 XXX Ok 
002 ZZZ exclu 
002 YYY exclu 
003 ZZZ ok 
003 YYY ok 
003 XXX ok
Marsh Posté le 14-01-2015 à 16:58:14
| stefaninho a écrit : Je sais Rufo, crois bien que j'y met de la bonne volonté c'est pas la première fois que j'ai ce problème, mais ça veut pas.   | 
 
Pour être précis, pour trouver l'équation booléenne, c'est le tableau de Karnaugh qu'il faut faire : http://fr.wikipedia.org/wiki/Table_de_Karnaugh
Marsh Posté le 14-01-2015 à 17:05:34
Mais c'est si compliqué que ça ce que je demande ?   
 
Marsh Posté le 14-01-2015 à 17:13:09
Ben l'équation booléenne tenant compte de tes critères ne semble pas être triviale quand on voit ton dernier tableau  
 
Pour avoir OK, il faut prendre les enregistrements qui contiennent soit : 
003 
001 et XXX 
aucun 002 
 
Soit tu exposes mal ton pb, soit les critères de sélection des bons enregistrements à conserver ne sont pas triviaux  
 
Ca peut peut-être venir aussi du fait que ta BD est mal structurée (pour le traitement que tu veux faire dans ce cas particulier).
Marsh Posté le 14-01-2015 à 17:28:11
J'ai pas l'impression que ce soit compliqué ca doit venir de moi.  
Il manque une entrée à mon tableau.  
002 XXX ok 
 
en gros je prends tout les 002 sauf les 002 ZZZ et 002 YYY 
 
L'autre solution c'est de calculer le montant que je ne veux pas prendre puis de le soustraire du montant total, mais je voulais un truc plus propre et simple. 
Marsh Posté le 14-01-2015 à 18:57:26
| stefaninho a écrit : Je vais essayer de te faire un énoncé plus clair.   | 
 
 
 
WHERE (produit NOT IN ('001','002')) OR (categ NOT IN  ('ZZZ','YYY')) 
Marsh Posté le 14-01-2015 à 19:42:06
  Vais tester ça demain.
 Vais tester ça demain.  
Marsh Posté le 14-01-2015 à 10:13:07
Salut, 
  
Bon la réponse est surement toute conne mais j'ai un gros problème de logique avec ces trucs.
En gros en mysql
Je veux exclure ceux qui ont une certaine combinaison 2 et 3
Bêtement j'ai fait :
Select sum(prix)
From table
Where crit1 = 'XXX'
AND (crit2 not in ('AAA', 'BBB') ' AND crit3 not in ('CCC', 'DDD'))
GROUP BY client
Mais je retrouve pas ce que je veux pour l'instant et je doute de ma méthode.
C'est quoi la bonne syntaxe ou logique à avoir ?
Merci.
Message édité par stefaninho le 14-01-2015 à 10:14:51
---------------
Et vous, quel est votre Final Fantasy préféré ?