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 :

[IB] Construction de la clause WHERE : parenthèse


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2002
    Messages : 11
    Points : 5
    Points
    5
    Par défaut [IB] Construction de la clause WHERE : parenthèse
    bonjour

    Voila ma question sera plus courte , si je lance la requette suivante mais qu'avec and (TYPEV_D_R=1) or (TYPEV_D_R=2) or (TYPEV_D_R=3) cela fonctionne correctement par contre si j'ajoute or (TYPEV_D_R=4) or (TYPEV_D_R=5)' cela déconne


    'select * from extrait_banqi.DBF where '+ li_4 +' and ref_propri='+ref_p+' and ref_immeu='+ref_i+
    ' and (TYPEV_D_R=1) or (TYPEV_D_R=2) or (TYPEV_D_R=3) or (TYPEV_D_R=4) or (TYPEV_D_R=5)' ;

    Merci d'avance.

  2. #2
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Ca n'est pas une requête SQL, ça : est-ce que tu peux la tracer dans ton code, et nous la poster sous forme de requête SQL, sans les variables style li_4 dont on ne connait absolument rien

    Ensuite, ça fonctionne correctement ou ça ne fonctionne pas correctement, ça ne signifie rien pour nous : explique un peu mieux ce que tu souhaites obtenir ou ne pas obtenir !

    Bon, vu ta requête, je "devine" ton problème :
    Une clause du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    and TYPEV_D_R=1 or TYPEV_D_R=2 or TYPEV_D_R=3 or TYPEV_D_R=4 or TYPEV_D_R=5
    est en général à mettre entre parenthèse associée à d'autres critères :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    and (TYPEV_D_R=1 or TYPEV_D_R=2 or TYPEV_D_R=3 or TYPEV_D_R=4 or TYPEV_D_R=5)
    car le AND est prioritaire sur le OR.

    Et tu gagneras en clarté à écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    and TYPEV_D_R IN (1, 2, 3, 4, 5)
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    and TYPEV_D_R BETWEEN 1 and 5

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2002
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Effectivement formidable j'ai adapté ma requette sur tes exemples et aussi bien l'une que l'autre fonctionne à merveille .

    Question vu que je suis un débutant dans le domaine peut-tu me dire si la question que je vient de posé est placé dans le bon forum , si non est le cas peut-tu me dire ou je doit la posé la prochaine fois .

    Merci d'avance ( et surtout encore un grand merci pour ton aide )

    Etienne

  4. #4
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Citation Envoyé par etienne.bo
    Question vu que je suis un débutant dans le domaine peut-tu me dire si la question que je vient de posé est placé dans le bon forum , si non est le cas peut-tu me dire ou je doit la posé la prochaine fois .
    Comme la question porte bien sur une requête SQL, la question ne se pose pas vraiment, mais la prochaine fois essaye de prendre en compte les remarques de Xo :

    Citation Envoyé par Xo
    Ca n'est pas une requête SQL, ça : est-ce que tu peux la tracer dans ton code, et nous la poster sous forme de requête SQL, sans les variables style li_4 dont on ne connait absolument rien

    Ensuite, ça fonctionne correctement ou ça ne fonctionne pas correctement, ça ne signifie rien pour nous : explique un peu mieux ce que tu souhaites obtenir ou ne pas obtenir !
    plus :

    1) Titre explicite
    2) Mettre la requête entre des balises "Code"
    3) Indenter la requête
    4) Annoncer ton moteur, sa version
    5) Si tu soupçonnes que le problème peut venir d'une spécificité de ton moteur et si un forum spécifique lui est consacré, alors poste dans ce dernier (bien sur, parfois il est difficile de savoir d'avance si le problème est spécifique)
    Bref : lis les règles du forum et applique-les.

    Bien que ce ne soit pas dans les règles du forum, essaye aussi d'appliquer des règles de formatage à ta requête (celles que tu veux), d'ailleurs cela te sera plus utile qu'à nous, par exemple (j'ai remplacé tes variables, une fois par une chaîne, et une fois avec un nombre, c'est certainement crétin, mais c'est pour l'exemple) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT * 
    FROM Extrait_Banqi.DBF 
    WHERE Condition1 
      AND Ref_Propri = 'ValeurSaisie'
      AND Ref_Immeu  = 17 
      AND Typev_d_r = 1 
       OR Typev_d_r = 2 
       OR Typev_d_r = 3 
       OR Typev_d_r = 4 
       OR Typev_d_r = 5;
    Sous cette forme-là, le problème saute aux yeux, non ?

    Remarque : comme il s'agit d'une requête extraite d'un programme : évite les SELECT * (ainsi que les INSERT sans lister les colonnes)

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2002
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    ok j'ai bien saisi ton message mais peut-tu m'explique ce que c'est le moteur de recherche , mois je sais que je travaille avec Delphi 4 et ce qui est foruni avec , mais quand à savoir ce que le moteur de recherche la !!
    ce ne serait pas interbase desfois ?

    Etienne

  6. #6
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Citation Envoyé par etienne.bo
    peut-tu m'explique ce que c'est le moteur de recherche
    Je ne parlais pas de moteur de recherche, mais de moteur de base de données, donc sans doute Interbase, pour les spécificités de ce moteur, tu peux poster dans le forum "Interbase et Firebird", tu y trouveras plus de spécialistes de ce SGBDR.

Discussions similaires

  1. [Access 97] Construction clause WHERE
    Par minsh dans le forum Langage SQL
    Réponses: 2
    Dernier message: 22/11/2006, 09h02
  2. pb construction clause Where
    Par xave dans le forum Langage SQL
    Réponses: 5
    Dernier message: 14/10/2005, 13h37
  3. Problème clause WHERE
    Par nesbla dans le forum Langage SQL
    Réponses: 3
    Dernier message: 11/06/2004, 15h07
  4. probleme avec le caractere 'Z' dans ma clause WHERE
    Par dibox dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 01/04/2004, 12h21
  5. [ character en simple cote ] clause Where
    Par hocinema dans le forum DB2
    Réponses: 3
    Dernier message: 20/02/2004, 10h17

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