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

jointure complète/externe : comment l'utiliser ? - SQL/NoSQL - Programmation

Marsh Posté le 22-09-2012 à 11:55:12    

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 :(

Reply

Marsh Posté le 22-09-2012 à 11:55:12   

Reply

Marsh Posté le 22-09-2012 à 13:06:52    

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
 

Reply

Marsh Posté le 22-09-2012 à 15:15:20    

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
Reply

Marsh Posté le 22-09-2012 à 15:54:06    

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
Reply

Marsh Posté le 22-09-2012 à 16:09:34    

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 ?

Reply

Marsh Posté le 22-09-2012 à 16:17:18    

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

Reply

Marsh Posté le 22-09-2012 à 16:43:57    

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

Reply

Marsh Posté le 22-09-2012 à 17:06:18    

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

Reply

Marsh Posté le 22-09-2012 à 17:14:02    

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

Reply

Marsh Posté le 22-09-2012 à 17:16:17    

MAJ ton profil alors ^^

Reply

Marsh Posté le 22-09-2012 à 17:16:17   

Reply

Marsh Posté le 22-09-2012 à 17:19:23    

boomy29 a écrit :

MAJ ton profil alors ^^


 
oui je vais le faire ^^


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

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed