Précédent   Forum des professionnels en informatique > Bases de données > Oracle > Débuter
Débuter Forum d'entraide pour débuter avec 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 24/08/2011, 16h51   #1
Membre du Club
 
Inscription : juillet 2006
Messages : 161
Détails du profil
Informations personnelles :
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2006
Messages : 161
Points : 40
Points : 40
Par défaut Pb requete basique

Bonjour,

Voilà mon pb

J'ai 3 tables :

personne
nom, prenom, adresse, code1, code2, code3, code4

utilisateur
nom, prenom, niveau, code1, code2, code3, code4

enseignant
nom, prenom, grade, code1, code2, code3, code4


je veux recuperer les nom, prenom de la table personne qd ce qui suit n'est pas verifier:
personne.code1=utilisateur.code1=enseignant.code1
personne.code2=utilisateur.code2=enseignant.code2
personne.code3=utilisateur.code3=enseignant.code3
personne.code4=utilisateur.code4=enseignant.code4


Je ne sais pas comment m'y prendre autant l'inverse ok:

Code :
1
2
3
4
5
6
7
8
9
10
11
SELECT personne.nom, personne.prenom
FROM personne, utilisateur, enseignant
WHERE 
personne.code1=utilisateur.code1,
utilisateur.code1=enseignant.code1,
personne.code2=utilisateur.code2,
utilisateur.code2=enseignant.code2,
personne.code3=utilisateur.code3,
utilisateur.code3=enseignant.code3,
personne.code4=utilisateur.code4,
utilisateur.code4=enseignant.code4;
Mais le tourner dans l'autre sens, je n'arrive pas à voir.

Merci pour votre aide.
cyberdevelopment est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2011, 17h01   #2
Membre du Club
 
Inscription : juillet 2006
Messages : 161
Détails du profil
Informations personnelles :
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2006
Messages : 161
Points : 40
Points : 40
de meme que j'aimerai bien avoir tous les enregistrement de la table enseignant quand personne.code1=utilisateurcode1 <> enseignant.code1
personne.code2=utilisateurcode2 <> enseignant.code2
personne.code3=utilisateurcode3 <> enseignant.code3
personne.code1=utilisateurcode4 <> enseignant.code4

<>(différent de)
J'ai des grosses lacunes en oracle, merci pour votre aide.
cyberdevelopment est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2011, 18h11   #3
Membre Expert
 
Inscription : août 2008
Messages : 1 271
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 1 271
Points : 1 929
Points : 1 929
Pour le 1er besoin :
Citation:
personne.code1=utilisateur.code1=enseignant.code1
personne.code2=utilisateur.code2=enseignant.code2
personne.code3=utilisateur.code3=enseignant.code3
personne.code4=utilisateur.code4=enseignant.code4
Je verrais quelque chose comme ça en partant du fait qu'il faut comparer les codes par nom/prenom (sinon retirer les références à nom prénom):
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
SELECT p.*
  FROM personne p
 WHERE NOT EXISTS (SELECT 1 
                     FROM utilisateur u
                     JOIN enseignant e  ON e.nom    = u.nom
                                       AND e.prenom = u.prenom
                                       AND e.code1  = u.code1
                                       AND e.code2  = u.code2
                                       AND e.code3  = u.code3
                                       AND e.code4  = u.code4
                    WHERE p.nom    = u.nom
                      AND p.prenom = u.prenom
                      AND p.code1  = u.code1
                      AND p.code2  = u.code2
                      AND p.code3  = u.code3
                      AND p.code4  = u.code4)
Pour le 2eme en partant du fait qu'il suffit qu'un code soit différent parmis les 4 (idem pour les noms prénoms):
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
SELECT e.*
  FROM enseignant e
 WHERE EXISTS (SELECT 1 
                 FROM utilisateur u
                 JOIN personne p  ON p.nom    = u.nom
                                 AND p.prenom = u.prenom
                                 AND p.code1  = u.code1
                                 AND p.code2  = u.code2
                                 AND p.code3  = u.code3
                                 AND p.code4  = u.code4
                 WHERE e.nom    = u.nom
                   AND e.prenom = u.prenom
                   AND (  e.code1 <> u.code1
                       OR e.code2 <> u.code2
                       OR e.code3 <> u.code3
                       OR e.code4 <> u.code4))
Je ne suis pas sûr d'avoir totalement cerné le problème, si ça ne convient pas merci de fournir un jeu de test pour les 3 tables et le résultat escompté.
skuatamad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/08/2011, 17h53   #4
Membre du Club
 
Inscription : juillet 2006
Messages : 161
Détails du profil
Informations personnelles :
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2006
Messages : 161
Points : 40
Points : 40
Merci pour ton aide très constructif, cela m'a permis de voir comment m'y prendre.
cyberdevelopment 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 08h28.


 
 
 
 
Partenaires

Hébergement Web