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

DB2 Discussion :

Utiliser dans WHERE une zone définie par AS


Sujet :

DB2

  1. #1
    Membre à l'essai
    Inscrit en
    Août 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Août 2010
    Messages : 48
    Points : 24
    Points
    24
    Par défaut Utiliser dans WHERE une zone définie par AS
    Bonjour à tous

    Impossible d'exécuter la clause SQL suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT Substr(ARTSGP , 1 , 2) as SQLSG1 FROM sxfart 
    WHERE SQLSG1 <= 'XX' and SQLSG1 > 'AB'
    J'ai l'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'La colonne SQLSG1 ne se trouve pas dans les tables indiquées'
    Est-ce que c'est uniquement un problème de syntaxe ou est-ce que je suis obligé de faire un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT Substr(ARTSGP , 1 , 2) FROM sxfart 
    WHERE Substr(ARTSGP , 1 , 2) <= 'XX' and Substr(ARTSGP , 1 , 2)  'AB'

    Merci!!

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    Bonjour,

    c'est un problème de syntaxe.

    Les alias dans une requête sql sont construit à la fin de la requête (j'ai un doute la dessus par rapport aux order by, donc avant dernière ou dernière position pour la création des alias de la clause select).

  3. #3
    Membre à l'essai
    Inscrit en
    Août 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Août 2010
    Messages : 48
    Points : 24
    Points
    24
    Par défaut
    Bonjour, merci pour la réponse.

    Je n'ai donc pas d'autre choix (à part un BETWEEN mais là n'est pas la question) que

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT Substr(ARTSGP , 1 , 2) FROM sxfart 
    WHERE Substr(ARTSGP , 1 , 2) <= 'XX' AND Substr(ARTSGP , 1 , 2)  > 'AB'
    ?

  4. #4
    Membre actif
    Inscrit en
    Juin 2008
    Messages
    154
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Juin 2008
    Messages : 154
    Points : 225
    Points
    225
    Par défaut
    Bonjour,

    En passant par une nested table, tu peux écrire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT SQLSG1 FROM (
    SELECT Substr(ARTSGP , 1 , 2) AS SQLSG1 FROM sxfart ) AS T 
    WHERE SQLSG1 <= 'XX' AND SQLSG1 > 'AB'
    A ta disposition.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 42
    Points : 44
    Points
    44
    Par défaut
    Bonjour,

    la variante de la neested table, la CTE (Common Table Expression) qui permet en plus de faire de la référence imbriquée sur les vues logiques.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    WITH T (SQLSG1) AS 
    (SELECT Substr(ARTSGP , 1 , 2) FROM sxfart ) 
    SELECT SQLSG1 FROM T WHERE SQLSG1 <= 'XX' AND SQLSG1 > 'AB'

  6. #6
    Membre à l'essai
    Inscrit en
    Août 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Août 2010
    Messages : 48
    Points : 24
    Points
    24
    Par défaut
    Merci à tous les deux.

    C'est intéressant. Je me pose des questions sur les temps de réponses...

  7. #7
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    Chez moi le plan d'execution est le même pour les 3 syntaxes (V5R4)

    Pour les perf il vous faut un index sur votre colonne ARTSGP.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 42
    Points : 44
    Points
    44
    Par défaut
    La CTE n'est ni plus ni moins que la définition d'une vue logique. Si le prédicat utilise l'index je ne pense pas qu'il y ait dégradation des performances. Le problème peut venir des fonctions que l'on intègre dans ce type de vue (GROUP BY, DISTINCT, SUBSTR, MAX, MIN...)

  9. #9
    Membre à l'essai
    Inscrit en
    Août 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Août 2010
    Messages : 48
    Points : 24
    Points
    24
    Par défaut
    Merci pour ces précisions.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 06/02/2009, 22h49
  2. Réponses: 1
    Dernier message: 22/08/2008, 10h06
  3. Charger du texte dans une zone définie (css? php? html?)
    Par dahu17 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 29/08/2007, 13h14
  4. afficher du powerpoint dans une zone définie
    Par Into7 dans le forum VB.NET
    Réponses: 1
    Dernier message: 25/07/2007, 14h33
  5. [vb]position du curseur dans une zone définie
    Par maxdwarf dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 28/02/2007, 06h54

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