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/01/2011, 11h02   #1
Invité de passage
 
ben j
Inscription : juillet 2010
Messages : 9
Détails du profil
Informations personnelles :
Nom : ben j

Informations forums :
Inscription : juillet 2010
Messages : 9
Points : 1
Points : 1
Par défaut PB de requete sql

Bonjour à tous,

Petite question que je n'arrive pas résoudre :
j'ai deux tables (table1 et table2).

table1:
idMessage
destinataireMessage
emetteurMessage
libMessage

table2:
codeAppli
libelleAppli

Sachant que les champs destinataireMessage et emetteurMessage correspondent à un code application (champs codeAppli de table2)

J'ai besoin d'une requête qui m'affiche:
libelleAppliDedestinataireMessage libelleAppliDeEmmetteurMessage

Merci.
bennj53 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2011, 11h06   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 986
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 986
Points : 18 234
Points : 18 234
Envoyer un message via MSN à CinePhil
Il faut faire une double jointure de table1 vers table2.

Tu nous montres la requête que tu auras essayée ?
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2011, 11h51   #3
Invité de passage
 
ben j
Inscription : juillet 2010
Messages : 9
Détails du profil
Informations personnelles :
Nom : ben j

Informations forums :
Inscription : juillet 2010
Messages : 9
Points : 1
Points : 1
Rappel :

table1:
idMessage
destinataireMessage
emetteurMessage
libMessage

table2:
codeAppli
libelleAppli

Ma requete:

Code :
1
2
3
4
5
6
SELECT t2.libelleAppli
FROM   table1 t1
           INNER JOIN table2 t2
           ON t1.destinataireMessage = t2.codeAppli
           OR  t1.emetteurMessage = t2.codeAppli
          AND t1.destinataireMessage= '0' AND t1.emetteurMessage = '2';

qui retourne
libelleAppliDedestinataireMessage
libelleAppliDeEmmetteurMessage
libelleAppliDedestinataireMessage
libelleAppliDeEmmetteurMessage
bennj53 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2011, 11h53   #4
Invité de passage
 
ben j
Inscription : juillet 2010
Messages : 9
Détails du profil
Informations personnelles :
Nom : ben j

Informations forums :
Inscription : juillet 2010
Messages : 9
Points : 1
Points : 1
j'ajoute que la fin de la requete doit etre obligatoirement:
and t1.destinataireMessage= '0' and t1.emetteurMessage = '2';

car elle est générée par un code java que je ne dois pas faire évoluer.
bennj53 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2011, 12h24   #5
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 986
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 986
Points : 18 234
Points : 18 234
Envoyer un message via MSN à CinePhil
Quand je disais qu'il fallait une double jointure, ça voulait dire qu'il faut deux instances de la table2 :
Code :
1
2
3
4
5
6
7
8
SELECT 
    t21.libelleAppli AS libelleAppliDedestinataireMessage,
    t22.libelleAppli AS libelleAppliDeEmmetteurMessage
FROM table1 t1
INNER JOIN table2 t21 ON t21.codeAppli = t1.destinataireMessage
INNER JOIN table2 t22 ON t22.codeAppli = t1.emetteurMessage
WHERE t1.destinataireMessage = 0 
    AND t1.emetteurMessage = 2
Au passage, j'ai supposé que les codeAppli sont numériques ; inutile d'entourer leurs valeurs d'apostrophes.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2011, 13h07   #6
Invité de passage
 
ben j
Inscription : juillet 2010
Messages : 9
Détails du profil
Informations personnelles :
Nom : ben j

Informations forums :
Inscription : juillet 2010
Messages : 9
Points : 1
Points : 1
Merci beaucoup pour vos lumières M.Einstein .
bennj53 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 00h31.


 
 
 
 
Partenaires

Hébergement Web