Problème d'opérande dans le résultat de ma chaine sql

Résolu
beegeezzz Messages postés 152 Date d'inscription mardi 4 novembre 2008 Statut Membre Dernière intervention 10 avril 2017 - 10 mai 2009 à 08:28
beegeezzz Messages postés 152 Date d'inscription mardi 4 novembre 2008 Statut Membre Dernière intervention 10 avril 2017 - 13 mai 2009 à 20:51
Bonjour tout le monde,

J'ai un petit souci avec cette chaine SQL :

SELECT NOTE
FROM inscrits_en
WHERE MATRICULE_ET
IN (

SELECT DISTINCT MATRICULE_ET, NOM_ET, PRENOM_ET
FROM etudiants
WHERE matricule_et
IN (

SELECT DISTINCT MATRICULE_ET
FROM inscrits_en
WHERE MNEMONIC
IN (

SELECT MNEMONIC
FROM cours
WHERE NOM_ANNEE = "BA3"
AND TYPE_DE_COURS = "TH"
AND CATEGORIE = "NORMAL"
)
)
ORDER BY NOM_ET
)

J'obtiens ce message d'erreur :

Operand should contain 1 column(s)

Sauriez-vous me dire comment je peux résoudre ce problème svp ?

Merci d'avance.

beegees

4 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
10 mai 2009 à 11:42
C'est ce que j'imaiginais effectivement.

Essaye ceci :
SELECT NOTE, NOM_ET, PRENOM_ET
FROM inscrits_en
INNER JOIN etudiants ON inscrits_en.MATRICULE_ET=etudiants.MATRICULE_ET
WHERE inscrits_en.MNEMONIC
IN (
    SELECT MNEMONIC
    FROM cours
    WHERE NOM_ANNEE = "BA3"
    AND TYPE_DE_COURS = "TH"
    AND CATEGORIE = "NORMAL"
    )
ORDER BY NOM_ET

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
10 mai 2009 à 11:17
Puisque la première requette atten une liste de valeur dans la clause WHERE, la seconde requette ne peut renvoyé qu'un seul champ.

SELECT NOTE
FROM inscrits_en
WHERE MATRICULE_ET
IN (

SELECT DISTINCT MATRICULE_ET<strike>, NOM_ET, PRENOM_ET</strike>
FROM etudiants
WHERE matricule_et
IN (

SELECT DISTINCT MATRICULE_ET
FROM inscrits_en
WHERE MNEMONIC
IN (

SELECT MNEMONIC
FROM cours
WHERE NOM_ANNEE = "BA3"
AND TYPE_DE_COURS = "TH"
AND CATEGORIE = "NORMAL"
)
)
ORDER BY NOM_ET
)

Mais après modif, je comprend pas trop l'intérêt d'une telle requête, es-tu sur qu'elle est bien construite et qu'elle correspond à ce que tu attend ?

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
0
beegeezzz Messages postés 152 Date d'inscription mardi 4 novembre 2008 Statut Membre Dernière intervention 10 avril 2017 1
10 mai 2009 à 11:36
Resalut Casy,

Merci pour ta réponse.

En effet, le fait de retirer nom et prenom fait que la chaine fonctionne dans mysql.

J'aimerais pourtant avoir le nom et le prénom car là, je n'obtiens que les cotes sans savoir à qui elles appartiennent.

Saurais-tu me dire comment faire stp ?

Encore un tout grand merci et bon Dimanche.

beegeezzzz
0
beegeezzz Messages postés 152 Date d'inscription mardi 4 novembre 2008 Statut Membre Dernière intervention 10 avril 2017 1
13 mai 2009 à 20:51
Salut Casy,

Un super, hyper, grand merci pour ta réponse qui m'a permis de résoudre mon problème mais aussi un autre problème PHP.

Comme on dit, c'est une pierre, deux coups.

Encore merci.

beegees
0
Rejoignez-nous