Précédent   Forum des professionnels en informatique > Bases de données > Oracle
Oracle Forum Oracle : le serveur, les outils, ... Voir F.A.Q Oracle Tutoriels Oracle
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 20/02/2007, 11h54   #1
Candidat au titre de Membre du Club
 
Inscription : mai 2002
Messages : 63
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 63
Points : 14
Points : 14
Par défaut Problème de SQL !

Bonjour à tous et à toutes,

Mon soucis est que je n'arrive pas à écrire une requête SQL
Voici le cas :
J'ai deux tables :
GROUPE
- ID_GROUPE (Primary key)
- GROUPE (nom du groupe)
- RESPONSABLE (nom du responsable) --> foreign Key de ID_AGENT
- RESPONSABLE_ADJOINT (nom du responsable Adj) --> foreign key de ID_AGENT

AGENT
- ID_AGENT (primary key)
- NOM (nom de l'agent)
- PRENOM (prenom de l'agent)

Je souhaite afficher le contenu de la table GROUPE mais en remplaçant les ID se trouvant dans les colonnes RESPONSABLE et RESPONSABLE_ADJOINT par les NOMs des agents correspondant et ceci en une seule et unique requête.

Quelqu'un sait t'il faire ?

D'avance merci
Alex01
Alex01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2007, 12h13   #2
McM
Expert Confirmé Sénior
 
Inscription : juillet 2003
Messages : 3 450
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 3 450
Points : 4 209
Points : 4 209
Faut des jointures.. C'est la base des Bases de donnée
Fait un tour dans les tutoriels oracle
http://oracle.developpez.com/guide/developpement/sql/
Section SELECT
3.1 Selection multi table

Voici le code (j'ai mis des jointures externes au cas ou l'un des responsables n'est pas renseigné.
Code :
1
2
3
4
5
SELECT id_groupe, groupe, responsable, r.nom || ' ' || r.prenom,
	responsable_adjoint, ra.nom || ' ' || ra.prenom
FROM GROUPE g, AGENT r, AGENT ra
WHERE g.responsable = r.id_agent (+)
AND g.responsable_adjoint = ra.id_agent (+)
__________________
More Code : More Bugs. Less Code : Less Bugs
McM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2007, 15h03   #3
Candidat au titre de Membre du Club
 
Inscription : mai 2002
Messages : 63
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 63
Points : 14
Points : 14
Honte à moi !

Ton code fonctionne à merveille.
Je te remercie

Cordialement,
Alex01
Alex01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2007, 17h04   #4
Candidat au titre de Membre du Club
 
Inscription : mai 2002
Messages : 63
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 63
Points : 14
Points : 14
Bonjour,

Petite question supplémentaire :
Si je souhaite afficher, en plus, le nombre d'agents par groupe ?

Ma méthode est la suivante mais je ne sias pas si elle est propre :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
CREATE OR REPLACE VIEW DETAILGROUPE
  (ID_GROUPE, GROUPE, DESCRIPTIF, RESPONSABLE, RESPONSABLE_ADJOINT)
AS
  SELECT g.ID_GROUPE, g.GROUPE, g.DESCRIPTIF, r.NOM || ' ' || r.PRENOM, ra.NOM || ' ' || ra.PRENOM
  FROM GROUPE g, AGENT r, AGENT ra
  WHERE g.RESPONSABLE = r.ID_AGENT (+)
  AND g.RESPONSABLE_ADJOINT = ra.ID_AGENT (+)
 
SELECT COUNT(r.ID_AGENT), d.GROUPE, d.ID_GROUPE, d.RESPONSABLE, d.RESPONSABLE_ADJOINT, d.DESCRIPTIF
FROM DETAILGROUPE d, AGENT r
WHERE d.ID_GROUPE = r.ID_GROUPE
GROUP BY d.GROUPE, d.ID_GROUPE, d.RESPONSABLE, d.RESPONSABLE_ADJOINT, d.DESCRIPTIF
Pour rappel mes tables sont les suivantes :
J'ai deux tables :
GROUPE
- ID_GROUPE (Primary key)
- GROUPE (nom du groupe)
- RESPONSABLE (nom du responsable) --> foreign Key de ID_AGENT
- RESPONSABLE_ADJOINT (nom du responsable Adj) --> foreign key de ID_AGENT

AGENT
- ID_AGENT (primary key)
- NOM (nom de l'agent)
- PRENOM (prenom de l'agent)

Merci de m'indiquer s'il y a mieux ou si c'est OK.

D'avance merci,
Alex01
Alex01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h32.


 
 
 
 
Partenaires

Hébergement Web