[PL SQL] Aide sur requete

Aide sur requete [PL SQL] - SQL/NoSQL - Programmation

Marsh Posté le 26-04-2014 à 14:07:07    

Bonjour,
 
J'ai besoin d'un coup de main sur une requête pl/sql :
 
http://hfr-rehost.dev.syn.fr/self/f94363e9f4aab021fc77065f2cf33b874f0f3d70.jpg
 
Requête simple mais je crois que j'ai oublié comment utilisé le exists....
 
Il faut que je trouve les étudiants (numE, nomE,  
prenomE) et les modules (numM, nomM) correspondants n'ayant pas validé de module  
durant le semestre 2013-2 et en cours de formation dans les mêmes modules durant le  
semestre 2014-1.
EN gros il y a que l'étudiant 109 qui doit ressortir :)
 
Merci pour votre aide.

Reply

Marsh Posté le 26-04-2014 à 14:07:07   

Reply

Marsh Posté le 27-04-2014 à 12:50:12    

Bonjour !
Il te suffit de reprendre tes cours... et de lire quelques posts parmis les millions de posts sur les différents forums qui exitent sur le net concernant les requetes sql...tu vas vite trouver des exemples qui vont répondre à ton soucis...
(cherche inner join, left outer join, exception join ... jointure sql ,et aussi regarde dans l'aide de ton éditeur sql)
Un forum, c'est pour un coup de main, pour un problème précis, une bidouille, des solutions techniques ...
pas pour faire le boulot à ta place.
Guillaume


Message édité par gpl73 le 27-04-2014 à 12:53:44

---------------
mieux vaut être un con au chaud, qu'un con gelé lol
Reply

Marsh Posté le 27-04-2014 à 13:46:56    

:o  
 
C'est bon j'ai trouvé :)
 
Il fallait faire deux fois le inner join sur la table inscription et avoir donc à disposition deux tables i1 et i2, c'est le seul moyen :)
 

Reply

Marsh Posté le 28-04-2014 à 14:08:31    

Cool :)
 
Oui, les joins pour récuperer les info des différentes tables "annexes" sont "cools" à faire
L'autre sur la même table était moins évidente :)
(juste à faire gaffe de bien mettre la sélection des deux résultats dans la clause where, et non pas dans la jointure, c'est plus propre )
 
Tu peux aussi le faire sans faire une double jointure sur ta table, mais avec une "bidouille":
 
En fonction de tes régles de gestion (Si tu as uniquement 2 états possibles ,"en cours" et "validé" ), un count du style:
select nume, numm, f1, f2, count(*) from inscription as a  
inner join ...
inner join...
group by nume, numm, f1, f2
having count(*) =2
 
Si tu en as 2 dans la valeur de count, cela veut donc dire que tu es dans ton cas recherché...
C'est plus tordu, on va dire  et c'est pas non plus dit que cela soit plus rapide lol...
 
 
 
Guillaume

Message cité 1 fois
Message édité par gpl73 le 28-04-2014 à 14:20:02

---------------
mieux vaut être un con au chaud, qu'un con gelé lol
Reply

Marsh Posté le 30-04-2014 à 14:27:11    

gpl73 a écrit :

Cool :)
 
Oui, les joins pour récuperer les info des différentes tables "annexes" sont "cools" à faire
L'autre sur la même table était moins évidente :)
(juste à faire gaffe de bien mettre la sélection des deux résultats dans la clause where, et non pas dans la jointure, c'est plus propre )
 
Tu peux aussi le faire sans faire une double jointure sur ta table, mais avec une "bidouille":
 
En fonction de tes régles de gestion (Si tu as uniquement 2 états possibles ,"en cours" et "validé" ), un count du style:
select nume, numm, f1, f2, count(*) from inscription as a  
inner join ...
inner join...
group by nume, numm, f1, f2
having count(*) =2
 
Si tu en as 2 dans la valeur de count, cela veut donc dire que tu es dans ton cas recherché...
C'est plus tordu, on va dire  et c'est pas non plus dit que cela soit plus rapide lol...
 
 
 
Guillaume


 
Oui effectivement, c'est une autre façon de voir la chose :) Merci  :jap:  

Reply

Sujets relatifs:

Leave a Replay

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