Bonjour,
J'ai une table avec entre autre 4 champs texte ayant pour nom :
- nom : le nom de la pièce
- code : un code à 5 chiffres
- inclus : un ou des codes à 5 et/ou 7 chiffres séparés par des virgules
- exclu : un ou des codes à 7 chiffres séparés par des virgules
Tous les champs sont en VARCHAR.
Je cherche à faire une requête MySQL pour récupérer le nom du champ qui correspond aux critères demandés.
Exemple de données :
Voici mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 nom;code;inclus;exclu "piece1";"06226";"0622863,0625195";"0622671" "piece2";"06228";NULL;"0622863" "piece3";"06211";"06270,0620918";NULL "piece4";"05921";NULL;NULL
J'ai un résultat : "piece1".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SELECT nom FROM `pièces` WHERE (code='06228' OR FIND_IN_SET('06228', inclus) OR FIND_IN_SET('0622863', inclus)) AND NOT FIND_IN_SET('0622863', exclu)
Le problème qui se pose, c'est quand mon champ exclu est NULL, ma requête me retourne aucun enregistrement alors qu'il y en a...
Exemple :
La requête formée comme ceci fonctionne dans ce cas :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SELECT nom FROM `pieces` WHERE (code='05921' OR FIND_IN_SET('05921', inclus) OR FIND_IN_SET('0592102', inclus)) AND NOT FIND_IN_SET('0592102', exclu)
J'ai un résultat : "piece4".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SELECT nom FROM `pieces` WHERE code='05921' OR FIND_IN_SET('05921', inclus) OR FIND_IN_SET('0592102', inclus) AND NOT FIND_IN_SET('0592102', exclu)
Comment puis-je faire pour que ma requête fonctionne dans tous les cas ?
Merci,
ZiP
Partager