Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/09/2011, 11h43   #1
Invité de passage
 
Homme
Inscription : septembre 2011
Messages : 2
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : septembre 2011
Messages : 2
Points : 0
Points : 0
Par défaut Condition dans requête SQL selon la valeur d'un champs

Bonjour,

je poste ce message après de nombreuses recherches sur internet car je ne parviens pas à boucler une petite requête. Je croyais avoir trouvé la solution mais contre toute logique ( du moins le peu dont je peux faire preuve), ça ne fonctionne pas :o

Cette requête donne le nom et le prénom d'un auteur/compositeur pour tous les albums de musique de la base de donnée. Seulement, je laisse la disposition de ne pas enregistrer de prénom pour un auteur car certain auteurs ont un pseudonyme avec un nom unique. Du coup, il y a dans la base des auteurs qui ont un nom mais pas de prénom ( valeur null ). J'essaie de tester si le prénom est null, auquel cas je n'affiche que le nom. Si le prénom ne vaut pas null, alors je concatène le prénom et le nom. Mais cela ne fonctionne pas :s Les artistes sans prénoms s'appellent "Null" dans la réponse de la requète ^^'

Voici la requête :
Code :
1
2
3
4
5
6
7
8
SELECT al.id_album, al.titre,
CASE ac.prenom
WHEN  NULL THEN ac.nom 
ELSE  ac.prenom + ' ' + ac.nom
END  'auteur/compositeur'
   ,al.support FROM album al
LEFT JOIN compose_par cp ON al.id_album = cp.id_album
LEFT JOIN auteurCompositeur ac ON ac.id_autComp = cp.id_autComp
En espérant trouver une âme charitable qui pourra m'aider, merci d'avance à tous o/
Arakasix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2011, 11h53   #2
Membre émérite
 
Homme Olivier Dehorter
Ingenieur de recherche - Ecologue
Inscription : juin 2003
Messages : 697
Détails du profil
Informations personnelles :
Nom : Homme Olivier Dehorter
Localisation : France

Informations professionnelles :
Activité : Ingenieur de recherche - Ecologue

Informations forums :
Inscription : juin 2003
Messages : 697
Points : 837
Points : 837
La syntaxe du CASE est incorrect

essayez :

Code :
1
2
3
4
5
6
7
8
9
10
SELECT Al.Id_album,
       Al.Titre,
       CASE
         WHEN Ac.Prenom IS NULL THEN Ac.Nom
         ELSE Ac.Prenom || ' ' || Ac.Nom
       END 'auteur/compositeur',
       Al.Support
  FROM Album Al
    LEFT JOIN Compose_par Cp ON Al.Id_album = Cp.Id_album
    LEFT JOIN Auteurcompositeur Ac ON Ac.Id_autcomp = Cp.Id_autc
dehorter olivier est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 21/09/2011, 12h02   #3
Invité de passage
 
Homme
Inscription : septembre 2011
Messages : 2
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : septembre 2011
Messages : 2
Points : 0
Points : 0
Citation:
Envoyé par dehorter olivier Voir le message
La syntaxe du CASE est incorrect
Un tout grand merci, votre requête fonctionne parfaitement
Arakasix est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h00.


 
 
 
 
Partenaires

Hébergement Web