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

Langage SQL Discussion :

question select where isnull - laisser le choix du champ sur lequel requêter ?


Sujet :

Langage SQL

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Février 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 2
    Points : 1
    Points
    1
    Par défaut question select where isnull - laisser le choix du champ sur lequel requêter ?
    Bonjour à tous,

    depuis le temps que je tombe sur ce forum quand je cherche des réponses à mes questions, j'ai enfin décidé de m'enregistrer et c'est mon premier post

    voilà mon problème: je fais un select avec une page qui devrait donner la possibilité à mes utilisateurs de choisir en entrée un champs ou bien un autre, plus une plage de date. càd en gros

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    select champ1, champ2
    from matable t
    join matable2 t2 on t.ch1=t2.ch3
    where t.from >= INPUTDATE1
    and t.to < INPUTDATE2
    and isnull(t.name,0) = INPUTTEXT3
    or isnull(t.id,0) = INPUTTEXT4
    je précise que la base est sous sql server 2005

    mais ça ne marche pas, comment faire pour laisser le choix du champ sur lequel requêter ???

    merci de votre aide

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 099
    Points : 28 390
    Points
    28 390
    Par défaut
    Tout dépend comment tu gères ton formulaire de saisie...
    Tu peux créer dynamiquement ta requête en fontion des zones qui sont renseignées, ce qui sera certainement le plus efficace.
    Ou bien préparer une requête complexe telle que celle-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT  champ1
        ,   champ2
    FROM    matable t
        JOIN 
            matable2 t2 
            ON  t.ch1 = t2.ch3
    WHERE   (t.FROM >= INPUTDATE1 OR TRIM(INPUTDATE1) = '') 
        AND (t.TO < INPUTDATE2 OR TRIM(INPUTDATE2) = '') 
        AND (   (isnull(t.name,0) = INPUTTEXT3 OR TRIM(INPUTTEXT3) = '')  
            OR  (isnull(t.id,0) = INPUTTEXT4 OR TRIM(INPUTTEXT4) = '') 
            )
    Attention à l'association de AND et OR dans tes conditions !

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Février 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    merci pour cette réponse,
    mon formulaire est généré par le logiciel de ged dont je m'occupe, il ne fait que lancer la requête sql que j'ai écrit en peuplant les inputs (précisé par %1, %2, etc.).
    je vais donc essayer lundi matin cette solution en englobant dans des ( ), ça me semble une bonne idée

Discussions similaires

  1. Select ... Where.. NOT IN
    Par backus dans le forum Requêtes
    Réponses: 3
    Dernier message: 20/11/2005, 19h11
  2. SELECT ... WHERE != ???
    Par Terminator dans le forum Langage SQL
    Réponses: 5
    Dernier message: 11/05/2005, 21h22
  3. Réponses: 8
    Dernier message: 05/05/2004, 16h28
  4. question sur SELECT ...WHERE...IN
    Par danseur dans le forum Requêtes
    Réponses: 3
    Dernier message: 23/01/2004, 15h23
  5. Select * Where {}
    Par Thomad dans le forum Langage SQL
    Réponses: 14
    Dernier message: 16/10/2003, 21h27

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