IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 MySQL Discussion :

Problème de requête SQL avec FIND_IN_SET ?


Sujet :

MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Par défaut Problème de requête SQL avec FIND_IN_SET ?
    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 :
    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
    Voici mon code :
    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)
    J'ai un résultat : "piece1".

    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 :
    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)
    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".

    Comment puis-je faire pour que ma requête fonctionne dans tous les cas ?

    Merci,
    ZiP

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Bonjour,

    il faut traiter spécifiquement le cas du NULL :

    à partir de votre première requete :
    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) OR exclus IS NULL)

  3. #3
    Membre éprouvé
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Par défaut
    Bonsoir,

    Ça marche beaucoup mieux comme ça !

    Merci,
    ZiP

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème exécution requête SQL avec HSQLDB
    Par montis dans le forum JDBC
    Réponses: 1
    Dernier message: 23/03/2012, 10h37
  2. Problème de requête SQL avec Firebird ?
    Par MaTHieU_ dans le forum SQL
    Réponses: 3
    Dernier message: 18/09/2008, 10h23
  3. Réponses: 2
    Dernier message: 07/02/2008, 12h45
  4. Problème de requête SQL avec DISTINCT et COUNT ?
    Par [ZiP] dans le forum Langage SQL
    Réponses: 4
    Dernier message: 29/01/2007, 18h11
  5. Problème de requête SQL avec instruction TRANSFORM
    Par Nosper dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 21/06/2005, 17h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo