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 :

Pourquoi AS n'aime pas SWITCH?


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    150
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 150
    Points : 100
    Points
    100
    Par défaut Pourquoi AS n'aime pas SWITCH?
    Bonjour,

    Je travaille sur excel 2002 et via macro (cf ADODB) je me connecte à une base pour faire une requete.

    Dans cette requete j'effectue un long SWITCH que je définis comme Pays

    Le souci est que le code suivant ne marche pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT SWITCH(................) AS Pays
     FROM Base 
    WHERE Pays IN (ya une ss requete que je passe)  
    ORDER BY Pays
    ALORS QUE le code suivant FONCTIONNE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT SWITCH(................) 
    FROM Base 
    WHERE SWITCH(................) IN (ya une ss requete que je passe)  
    ORDER BY SWITCH(................)
    Quelqu'un pourrait-il juste me dire pourquoi?
    Merci

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Les alias de colonne sont affectés à la fin de la requête.

    Ils ne peuvent donc pas être utilisé dans le where, le group by et normalement pas le order by (certains SQBD le permettent).

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    150
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 150
    Points : 100
    Points
    100
    Par défaut
    Mais les alias, ca sert a rien alors?

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    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 080
    Points : 30 801
    Points
    30 801
    Par défaut
    Pour nommer les colonnes retournées à l'appelant (application) ou dans le cas d'utilisation de tables dérivées (requêtes utilisées dans le FROM)
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  5. #5
    Membre expérimenté Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Points : 1 738
    Points
    1 738
    Par défaut
    Si vous voulez vous debarasser de votre probleme, utiliser le ORDER BY [N° de colonne]
    Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac)

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Points : 1 199
    Points
    1 199
    Par défaut
    Bonjour,
    Je suis d'accord avec la réponse précédente, il t'est possible d'écrire également ta requête ainsi en utilisant une sous requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT Pays
    FROM
        (
    		SELECT SWITCH(................) AS Pays
    		 FROM Base 
        ) as T
    WHERE Pays IN (ya une ss requete que je passe)  
    ORDER BY Pays
    A+
    Soazig

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    150
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 150
    Points : 100
    Points
    100
    Par défaut
    Merci à tous pour ces explications

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    150
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 150
    Points : 100
    Points
    100
    Par défaut
    Je me permets de relancer mon sujet car je souhaitais appliquer ce que j'avais appris grace à vous et j'ai quelque problemes.

    Pour ceux qui veulent m'aider voici ma base :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Nom,Prenom,Pays,Montant
    Dupont,Albert,FR,125
    Dupond,Albert,DE,333
    Dupont,Albert,DE,122
    Dupont,Albert,DE,57
    Ce que je voudrais faire c'est une cle avec Nom_Prenom_Pays et les compter.

    Voici ce que je souhaitais obtenir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Nom,Prenom,Pays,Count CLE
    Dupont,Albert,FR,1
    Dupond,Albert,DE,1
    Dupont,Albert,DE,2
    Voici la requete que j'ai faite et qui ne marche pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT Nom, Prenom, Pays, COUNT(CLE) 
    FROM 
           (SELECT *, Nom & '_' & Prenom & '_' & Pays AS CLE
            FROM [Sheet1$]) 
    GROUP BY CLE
    Pouvez vous me dire pourquoi?
    Merci

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    150
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 150
    Points : 100
    Points
    100
    Par défaut
    C'est bon c'est mon group by qui était pas complet!!
    Je sors

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

Discussions similaires

  1. [W3C] Pourquoi ça ne marche pas sous IE
    Par polo-j dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 16/02/2005, 16h07
  2. Pourquoi je n'ai pas le droit à un bootsplash ?
    Par Michaël dans le forum Administration système
    Réponses: 4
    Dernier message: 30/08/2004, 14h02
  3. [C#] Pourquoi je ne peux pas sauvegarder le fichier Xml ?
    Par gregoun dans le forum Services Web
    Réponses: 5
    Dernier message: 05/05/2004, 10h00
  4. probleme avec requete sql aime pas les strings
    Par lil_jam63 dans le forum Bases de données
    Réponses: 3
    Dernier message: 24/02/2004, 14h45

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