[MySQL] Requête imbriquée

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics

CrazyCow007
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 182
Inscription: Dim Déc 28, 2003 17:07

[MySQL] Requête imbriquée

Message le Lun Juin 25, 2007 13:05

Bonjour à tous !

Je vous présente (un extrait) de la structure de ma base de données qui me permet de gérer les informations d'enseignants :
matiere
id_mat
libelle_mat

enseigner_matiere
id_ens
id_mat


Voilà mon problème :
J'aimerais afficher la liste des matières non enseignées par un enseignant en particulier.
Je me suis donc dis que la solution serait de sélectionner toutes les matières et de retirer celles qui sont déjà présentes dans enseigner_matiere pour un id_ens donné.

Voilà ma requête actuelle (pour id_ens = 3) :
Code: Tout sélectionner
SELECT id_mat
FROM enseigner_matiere
WHERE id_mat NOT IN(
SELECT id_mat
FROM enseigner_matiere
WHERE id_ens = '3')

N.B. : Pour simplifier j'ai enlevé la jointure qui me permet également de récupérer le libellé de la matière dans la table matiere.

Erreur retournée :

#1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT id_mat FROM enseigner_matiere WHERE id_ens = '3' )
L


J'ai lu que les requêtes imbriquées n'étaient pas prises en compte dans des versions antérieures à la 4.1 de MySQL. J'utilise actuellement la version 5.0.22.

N'hésitez pas à me demander si vous avez besoin de plus d'informations ;)

Merci beaucoup !


Joe Le Mort
WRInaute impliqué
WRInaute impliqué
 
Messages: 255
Inscription: Mar Aoû 08, 2006 14:13

Message le Lun Juin 25, 2007 13:36

euh un peu brouillon ca !
tu as pas fait une erreur dans cette req :
Code: Tout sélectionner
SELECT id_mat
FROM enseigner_matiere
WHERE id_mat NOT IN(
SELECT id_mat
FROM enseigner_matiere
WHERE id_ens = '3')

y'a 2 fois enseigner_matiere !

Sinon essaye la clause HAVING.

CrazyCow007
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 182
Inscription: Dim Déc 28, 2003 17:07

Message le Lun Juin 25, 2007 13:47

Code: Tout sélectionner
SELECT id_mat
FROM enseigner_matiere
WHERE id_mat NOT IN(
SELECT id_mat
WHERE id_ens = '3')

Est-ce que c'est ok ?

Sinon j'ai du mal à voir comment tu veux utiliser une clause HAVING. Je n'utilise pas de fonction d'agrégat et je vois mal comment en utiliser une :?


Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités