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 :

[Requete][Where] Quelle est l'utilité d'une clause: 1=1 ?


Sujet :

Langage SQL

  1. #1
    Membre confirmé
    Inscrit en
    Juin 2005
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 137
    Par défaut [Requete][Where] Quelle est l'utilité d'une clause: 1=1 ?
    slt tout le monde,


    J'aurais aimé savoir à quoi cela sert de mettre dans chaque clause d'une requête 1=1?
    cela optimise t il la requête?

    Merci

    édité par neguib pour ajustement du titre, veillez à la clarté de votre forum svp

  2. #2
    Membre expérimenté Avatar de VinceTlse
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 163
    Par défaut
    Bonjour,
    Aurais tu un exemple de requete?
    Parce que ca ne sert à rien de faire juste "1=1".

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2005
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 137
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from A,B where 1=1 and A.x=B.y
    A vue d'oeil ca sert à rien mais je pense que cela sert à optimer la requête!!!

    des avis????

  4. #4
    Membre éprouvé
    Avatar de TheLeadingEdge
    Inscrit en
    Mai 2005
    Messages
    1 199
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 1 199
    Par défaut
    bonjour,

    C'est 1 'bidouille' pour avoir 1 condition toujours vraie.
    Dans l'exemple que tu donnes ça ne sert à rien.

    Un exemple d'utilisation possible :
    Tu as 1 SGBD qui n'implémente pas le CROSS JOIN et tu veux tout de même faire 1 produit cartésien, comme le JOIN impose (normalement !)
    ... ON k1 = k2
    mais que justement tu ne veux pas faire de jointure, tu contournes le pb en faisant
    ... table2 INNER JOIN table1 ON 1 = 1.

  5. #5
    Membre expérimenté Avatar de VinceTlse
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 163
    Par défaut
    Ben a mon avis, ca ne setrt a rien, et meme au contraire, ca peut dégrader (très peu je pense) le temps d'exécution.
    Par contre, tu n'a pas dis sur quel SGBD tu travailles. Peut etre qu il s agit d'une syntaxe spéciale.

  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
    Par défaut
    Cette bidouille peut avoir un intérêt lors de l'écriture de requêtes dynamiques en fonction de saisies utilisateurs dans un programme (pseudo-code) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    sSQL = 'SELECT xxx FROM laTable WHERE 1 = 1'
    if Cond1 != '' THEN sSQL = sSQL + ' AND leChamp1 = ' + Cond1 ;
    ...
    if Cond156 != '' THEN sSQL = sSQL + ' AND leChamp156 = ' + Cond156 ;
    Comme cela il est inutile de se demander si le bout de requête à ajouter doit commencer par WHERE ou par AND.

  7. #7
    Membre confirmé
    Inscrit en
    Juin 2005
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 137
    Par défaut
    en faite j'ai vu cela dans un code pl sql pour alimenter un entrepot de donnée!!

    Merci pour les réponses en tout cas!!

  8. #8
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 986
    Billets dans le blog
    6
    Par défaut
    Aucun effet le 1=1.

    C'est effectivement un "truc" de développeur intéressant pour se simplifier l'écriture dynamique des clauses WHERE des requêtes.

    En effet, une fois éliminé la première condition du filtre WHERE, toutes les autres conditions ET s'écrivent :
    C'est plus facile d'ajouter quelques chose d'homogène que de se poser la question des effets de bord.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  9. #9
    Expert confirmé
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Par défaut
    Bonjour alpachico
    Citation Envoyé par La règle du forum
    Ce forum général SGBD est consacré aux discussions comparatives entre les SGBD, et sur les concepts généraux aux SGBD.

    Règles
    - Si vous souhaitez parler d'un SGBD en particulier, postez votre message dans le forum correspondant (Access, MySQL, Interbase...) S'il ne rentre dans aucun de ces forums, merci de le placer sur Autres SGBD et non pas Général SGBD.

    - Si votre message concerne les requêtes SQL, veillez à le placer sur le forum intitulé Langage SQL. ...
    voir > http://www.developpez.net/forums/viewtopic.php?t=67792

    Soyez rigoureux quant aux respects des règles du forum, elles vous garantissent également les réponses les plus appropriées à résoudre votre souci, tout en veillant à ne pas incommoder inutilement les professionnels qui donnent benevolement de leur compétence à vous répondre.

    Exceptionnellement, je déplace votre post dans le forum approprié Langage SQL
    Conformément à la règle décrite dans le lien ci-dessus, je supprimerai tout autre post non conforme. Si par inadvertance, vous vous aperceviez d'une erreur de postage de votre part, n'hésitez pas à me contactez par mp, ou un autre collègue modérateur afin que nous vous aidions à déplacer votre post (afin d'eviter le multipostage lui même proscrit)

    Très Cordialement neguib

Discussions similaires

  1. Quelle est l'utilité des Relations & Foreign Keys?
    Par Danny Blue dans le forum Requêtes
    Réponses: 3
    Dernier message: 10/06/2006, 12h18
  2. Réponses: 1
    Dernier message: 11/03/2006, 09h55
  3. [WHERE] Quelle est l'incidence de l'ordre des filtres ?
    Par MashiMaro dans le forum Langage SQL
    Réponses: 5
    Dernier message: 25/12/2005, 18h36
  4. [D7] Quelle est l'utilité de MySQL Embedded avec Delphi ?
    Par raoulmania dans le forum Bases de données
    Réponses: 1
    Dernier message: 16/11/2005, 18h40
  5. Réponses: 2
    Dernier message: 25/05/2005, 21h34

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