Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes MySQL
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 05/08/2011, 18h32   #1
 
Administrateur systèmes et réseaux
Inscription : juillet 2011
Messages : 19
Détails du profil
Informations professionnelles :
Activité : Administrateur systèmes et réseaux
Secteur : Service public

Informations forums :
Inscription : juillet 2011
Messages : 19
Points : -2
Points : -2
Par défaut Requête avec right join

salut,

J'ai une petit soucis avec une requête qui a pour but d'afficher le restant des cours auquel un élève n'est pas inscrit.

l'étudiant est donc inscrit en Comptabilité et Electro - Mécanique.
Et pourtant, la requête m'affiche tous les cours disponibles de l'école et non pas le restant.

Voici la requête :

Code :
1
2
3
4
5
6
7
8
9
10
11
 
SELECT intitule_formations 
FROM etudiants 
RIGHT JOIN inscriptions ON numero_etudiants = fk_etudiants 
INNER JOIN formations ON fk_formations = code_formations 
WHERE NOT EXISTS (
  SELECT * 
  FROM formations 
  WHERE code_formations = fk_formations 
    AND concat(nom_etudiants,' ',prenom_etudiants) = 'Nom Prenom'
)
Je essayé également fait avec left join mais je n'arrive pas au résultat voulu ><.

Merci de l'aide que vous pourrez m'apporter
Device01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/08/2011, 09h34   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 019
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 019
Points : 18 302
Points : 18 302
Envoyer un message via MSN à CinePhil
Tu as pris le problème dans le mauvais sens !

Tu cherches les formations auxquelles l'étudiant n'est pas inscrit.
Autrement dit, tu cherches les formations pour lesquelles il n'existe pas d'inscription pour cet étudiant :
Code :
1
2
3
4
5
6
7
8
9
10
SELECT f.intitule_formations
FROM formations f
WHERE NOT EXISTS
(
    SELECT *
    FROM inscriptions i
    INNER JOIN etudiants e ON e.numero_etudiants = i.fk_etudiants
    WHERE concat(nom_etudiants,' ',prenom_etudiants) = 'Nom Prenom'
        AND i.fk_formations = f.code_formations
)
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2011, 09h30   #3
 
Administrateur systèmes et réseaux
Inscription : juillet 2011
Messages : 19
Détails du profil
Informations professionnelles :
Activité : Administrateur systèmes et réseaux
Secteur : Service public

Informations forums :
Inscription : juillet 2011
Messages : 19
Points : -2
Points : -2
Un grand merci à toi.
Je n'ai pas eu le temps de tester mais je te tiens au courant.
En tout cas ta requête semble tout à fait logique.

@+
Device01 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 12h42.


 
 
 
 
Partenaires

Hébergement Web