Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1682 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  jointure complète/externe : comment l'utiliser ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

jointure complète/externe : comment l'utiliser ?

n°2157764
Benh_31
Posté le 22-09-2012 à 11:55:12  profilanswer
 

Bonjour à tous !
 
alors voila, j'ai un TP à faire et une question me prend la tête depuis 3 jours : elle concerne les "jointures complètes et externes" mais je ne sais pas du tout comment m'en servir :(
 
Pour vous expliquer brièvement je dois faire une requête pour afficher le nombre d'emprunts (à la bibliothèque de mon iut) de chaque étudiant.
 
donc moi je comptais le nombre d’occurrence de chaque IDetudiant dans ma table emprunter.
 
MAIS une certaine "Morgane"  :fou: a fait 0 emprunt donc elle n'apparait pas dans la table emprunter et c'est la qu’apparemment il faut utiliser une jointure mais je vois pas du tout comment m'en servir :s
 
 
je vous mets un diagramme de classe que j'ai fais pour que ça soit plus clair :
 
http://img15.hostingpics.net/pics/982675Sanstitre.png
 
si vous pouviez me donner un petit coup de pousse :( j'aimerais vraiment comprendre cette histoire de jointure :(

mood
Publicité
Posté le 22-09-2012 à 11:55:12  profilanswer
 

n°2157767
boomy29
PSN: tintine29
Posté le 22-09-2012 à 13:06:52  profilanswer
 

En  T-SQL (SQL serveur) :
ya 4 type de jointure a gauche (left outer join), a droite (right outer join), complete (inner join) et incomplete (cross join)
 
gauche et droite c'est pareil il suffit de change l'ordre des tables  
 
 
dans ton cas tu dois faire pour chaque etudiant et même ceux qui n'ont pas fait d'emprunt  
 
donc un select idEtu from etudiant left outer join  
pour avoir tout tes etudiants
 

n°2157776
Benh_31
Posté le 22-09-2012 à 15:15:20  profilanswer
 

boomy29 a écrit :

En  T-SQL (SQL serveur) :
ya 4 type de jointure a gauche (left outer join), a droite (right outer join), complete (inner join) et incomplete (cross join)
 
gauche et droite c'est pareil il suffit de change l'ordre des tables  
 
 
dans ton cas tu dois faire pour chaque etudiant et même ceux qui n'ont pas fait d'emprunt  
 
donc un select idEtu from etudiant left outer join  
pour avoir tout tes etudiants
 


 
 
Le truc c'est que j'ai réussi a faire ma commande pour ceux qui ont fait des emprunts mais pas pour les autres : j'arrive pas a l'incorporer dans mon join truc...
 

Code :
  1. column etu heading "Etudiants";
  2. column emp heading "Nombre d'emprunts";
  3. select etudiant.nom as etu, count(emprunter.idetu) as emp
  4. from etudiant, emprunter
  5. where etudiant.idetu=emprunter.idetu
  6. group by etudiant.nom


Message édité par Benh_31 le 22-09-2012 à 15:16:34
n°2157777
boomy29
PSN: tintine29
Posté le 22-09-2012 à 15:54:06  profilanswer
 

un autre syntaxe pour ta requete pour mieux voir la jointure normalement tu as le même resultat avec cette requete qu'avec ta requete

  • select etudiant.nom as etu, count(emprunter.idetu) as emp
  • from etudiant inner join emprunter on etudiant.idetu=emprunter.idetu
  • group by etudiant.nom


 
test ça normalement tu vois moragne maintenant
select etudiant.nom as etu, count(emprunter.idetu) as emp
from etudiant left outer join emprunter on etudiant.idetu=emprunter.idetu
group by etudiant.nom

Message cité 1 fois
Message édité par boomy29 le 22-09-2012 à 15:57:57
n°2157780
Benh_31
Posté le 22-09-2012 à 16:09:34  profilanswer
 

boomy29 a écrit :

un autre syntaxe pour ta requete pour mieux voir la jointure normalement tu as le même resultat avec cette requete qu'avec ta requete

  • select etudiant.nom as etu, count(emprunter.idetu) as emp
  • from etudiant inner join emprunter on etudiant.idetu=emprunter.idetu
  • group by etudiant.nom


 
test ça normalement tu vois moragne maintenant
select etudiant.nom as etu, count(emprunter.idetu) as emp
from etudiant left outer join emprunter on etudiant.idetu=emprunter.idetu
group by etudiant.nom


 
 
Yep ça marche :)
et donc ça c'est une jointure complète ou externe ?

n°2157781
boomy29
PSN: tintine29
Posté le 22-09-2012 à 16:17:18  profilanswer
 

inner join c'est une jointure complète
après il y a externe a gauche droite ou sans rien  
 
sans rien c'est le cross join déconseillé car elle prend beaucoup de ressource ça te sort toute les lignes étudiant, tous les emprunts et le jointure des 2  
 
et donc je te conseille ma syntaxe pour les jointures c'est plus visible

n°2157783
Benh_31
Posté le 22-09-2012 à 16:43:57  profilanswer
 

ok merci.. c'est encore un peu flou mais je vais travailler dessus :)

n°2157784
boomy29
PSN: tintine29
Posté le 22-09-2012 à 17:06:18  profilanswer
 

de rien bonne chance je sais en 1ere année d'IUT c'est pas mal abstrait mais une fois que tu mets en application les connaissances tu vois l’intérêt

n°2157785
Benh_31
Posté le 22-09-2012 à 17:14:02  profilanswer
 

je suis en deuxième année maintenant :) ^^

n°2157787
boomy29
PSN: tintine29
Posté le 22-09-2012 à 17:16:17  profilanswer
 

MAJ ton profil alors ^^

mood
Publicité
Posté le 22-09-2012 à 17:16:17  profilanswer
 

n°2157789
Benh_31
Posté le 22-09-2012 à 17:19:23  profilanswer
 

boomy29 a écrit :

MAJ ton profil alors ^^


 
oui je vais le faire ^^


Message édité par Benh_31 le 22-09-2012 à 17:22:47

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  jointure complète/externe : comment l'utiliser ?

 

Sujets relatifs
Menu déroulant sans utiliser Flash moyen javascript pour ne pas utiliser de marquee ?
comment utiliser TexCoordGeneration avec un objet(.obj) chargéquel outil utiliser pour l'interface de mon jeu (Ogre3D)
Impossible d'utiliser CpanC++ Builder 6 - Utiliser une liste déroulante
lancer un programme via un fichier externeComment installer et utiliser Abbot sous Java ?
[résolu]Jointure/recherchev en vbaResource id2 : utiliser ce résultat comme variable
Plus de sujets relatifs à : jointure complète/externe : comment l'utiliser ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR