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 :

Problème construction de requète


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Juin 2006
    Messages : 38
    Points : 28
    Points
    28
    Par défaut Problème construction de requète
    Bonjour à tous,

    je cherche à effectuer une requête ou je ne trouve pas de solution.
    SGBD: My SQL

    Shéma:
    annonce( id_annonce, pseudo..., est_adresse_membre, adresse, ville, cp)
    compte( pseudo, ..., adresse, ville, cp)


    je cherche à récupérer la liste des annonces avec l'adresse ou ces annonces ce trouvent.
    Voila les contraintes, si la variable est_adresse_membre = 0 alors on prend l'adresse de la table annonce, si est_adresse_membre =1, dans ce cas l'adresse à récupérer est celui du compte (via le pseudo de l'annonce)

    Je sais comment réaliser la requete grace à l'opérateur union mais je souhaiterais savoir si il existe un moyen autre de créer cette requète ?

    D'avance merci

  2. #2
    Membre confirmé Avatar de elbj
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2004
    Messages
    371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Services à domicile

    Informations forums :
    Inscription : Novembre 2004
    Messages : 371
    Points : 558
    Points
    558
    Par défaut
    Bonjour

    Je vous conseille d'utiliser la commande CASE si vous êtes en MySQL 5.*, elle est expliquée ICI.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    SELECT
      CASE est_adresse_membre
        WHEN 0 THEN A.Adresse
        WHEN 1 THEN C.Adresse
        ELSE null
      END CASE AS Adresse,
      CASE est_adresse_membre
        WHEN 0 THEN A.Ville
        WHEN 1 THEN C.Ville
        ELSE null
      END CASE AS Ville,
      CASE est_adresse_membre
        WHEN 0 THEN A.Cp
        WHEN 1 THEN C.Cp
        ELSE null
      END CASE AS Cp
    FROM annonce A
      LEFT JOIN compte C ON C.pseudo = A.pseudo
    Cordialement

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 920
    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 920
    Points : 51 712
    Points
    51 712
    Billets dans le blog
    6
    Par défaut
    Ce serait sans doute plus simple avec du NULLIF COALESCE...

    A +

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Juin 2006
    Messages : 38
    Points : 28
    Points
    28
    Par défaut
    je capte pas, j'ai mysql 5.0 et j'ai testé ta requete et j'obtiens cette erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    requête SQL: Documentation
     
    SELECT
    CASE est_adresse_membre
    WHEN 0
    THEN A.Adresse
    WHEN 1
    THEN C.Adresse
    ELSE NULL
    END CASE AS Adresse,
    CASE est_adresse_membre
    WHEN 0
    THEN A.Ville
    WHEN 1
    THEN C.Ville
    ELSE NULL
    END CASE AS Ville,
    CASE est_adresse_membre
    WHEN 0
    THEN A.Cp
    WHEN 1
    THEN C.Cp
    ELSE NULL
    END CASE AS Cp
    FROM annonce A
    LEFT JOIN compte C ON C.pseudo = A.pseudo
    LIMIT 0 , 30
     
    MySQL a répondu:Documentation
    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CASE AS Adresse,
      CASE est_adresse_membre
        WHEN 0 THEN A.Ville
        WHEN 1 TH' at line 6

  5. #5
    Membre émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    Par défaut
    Salut !

    Allez, regarde très fort l'intitulé de l'erreur, puis la syntaxe du CASE...
    (genre sur le site MySQL, ou sur les tutos de ce forum).

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Juin 2006
    Messages : 38
    Points : 28
    Points
    28
    Par défaut
    ok j'ai trouvé mon erreur
    il fallait remplacer End Case par End


  7. #7
    Membre émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    Par défaut
    Bien joué
    90% des erreurs se corrigent extrêment facilement en lisant le message d'erreur

    Bon, j'aime pas trop faire ce genre de remarque, mais petite exception :
    tu peux fêter ta victoire en activant le tag RESOLU !

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

Discussions similaires

  1. Problème sur une construction de requête
    Par Slayes dans le forum Langage SQL
    Réponses: 4
    Dernier message: 22/07/2013, 14h15
  2. [SQL] Problème construction requête SQL - PHP
    Par laulau37 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 18/06/2007, 17h50
  3. Problème de construction de requête !
    Par feasil dans le forum Access
    Réponses: 5
    Dernier message: 18/04/2006, 11h36
  4. [Access] Problème de construction de requête
    Par feasil dans le forum Langage SQL
    Réponses: 6
    Dernier message: 13/04/2006, 12h59
  5. Problème de construction de requête !
    Par feasil dans le forum Access
    Réponses: 1
    Dernier message: 12/04/2006, 21h02

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