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 04/01/2012, 15h12   #1
Membre confirmé
 
Homme Dominique
Première S
Inscription : juillet 2010
Messages : 252
Détails du profil
Informations personnelles :
Nom : Homme Dominique
Âge : 15
Localisation : France

Informations professionnelles :
Activité : Première S

Informations forums :
Inscription : juillet 2010
Messages : 252
Points : 228
Points : 228
Par défaut #1054 - Unknown column 'mod' in 'IN/ALL/ANY subquery'

Bonjour,
j'ai un problème sur le quel je viens de sécher près de trois quart d'heure et que je n'ai toujours pas réussi à résoudre.

Inutile d'expliquer la structure de ma table je crois ...
Voici la requête :

Code :
SELECT * FROM memory_mod WHERE author = 55 AND `mod` NOT IN(SELECT memory_j_mod_card.`mod` FROM memory_j_mod_card WHERE card = 44)
et l'erreur :

#1054 - Unknown column 'mod' in 'IN/ALL/ANY subquery'

je me suis rendu compte trop tard que 'mod' était un mot clés réservés, mais le projet était trop entamé pour revenir en arrière.

je n'ai presque rien trouvé sur le net, sinon sur stackOverflow où le problème à été résolu grâce à un alias. J'ai essayé aussi, mais bernique ...

Code :
SELECT * FROM memory_mod WHERE author = 55 AND `mod` NOT IN(SELECT  memory_j_mod_card.`mod` AS xxx FROM memory_j_mod_card WHERE card = 44)
En lisant l'erreur, je crois comprendre que MySQL n'a pas trouvé la colonne 'mod' dans la sous-requête. Mais j'ai déjà fait plein de sous-requêtes, et je n'ai jamais eu le pb. Surtout que dans une clause IN, MySQL n'a pas besoin de savoir le nom de la colonne dans la sous requête puisqu'il n'y a qu'une seule colonne ...

merci d'avance.
Dominique49 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2012, 15h21   #2
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 655
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 655
Points : 2 657
Points : 2 657
Bonjour,

Et est-ce qu'en passant par une jointure externe vous avez le même problème ?

Code :
1
2
3
4
5
 
SELECT * 
FROM memory_mod a
LEFT OUTER JOIN memory_j_mod_card b ON a.`mod` = b.`mod` AND b.card = 44
WHERE a.author = 55 AND b.card IS NULL

Et avec un not exists ?
Code :
1
2
3
4
5
 
SELECT * 
FROM memory_mod a
WHERE author = 55 AND NOT EXISTS (SELECT  NULL 
FROM memory_j_mod_card b WHERE b.card = 44 AND a.`mod` = b.`mod`)
punkoff est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2012, 15h40   #3
Membre confirmé
 
Homme Dominique
Première S
Inscription : juillet 2010
Messages : 252
Détails du profil
Informations personnelles :
Nom : Homme Dominique
Âge : 15
Localisation : France

Informations professionnelles :
Activité : Première S

Informations forums :
Inscription : juillet 2010
Messages : 252
Points : 228
Points : 228
aussi:
avec la première requête :

#1054 - Unknown column 'a.mod' in 'on clause'

pour la deuxième :

#1054 - Unknown column 'a.mod' in 'where clause'

merci beaucoup.
Dominique49 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2012, 16h11   #4
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 655
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 655
Points : 2 657
Points : 2 657
et quel est la définition de votre table : memory_j_mod_card ?
punkoff est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2012, 20h25   #5
Membre confirmé
 
Homme Dominique
Première S
Inscription : juillet 2010
Messages : 252
Détails du profil
Informations personnelles :
Nom : Homme Dominique
Âge : 15
Localisation : France

Informations professionnelles :
Activité : Première S

Informations forums :
Inscription : juillet 2010
Messages : 252
Points : 228
Points : 228
mm ... il n'y a pas de clé primaire.
en fait, j'ai un champs card et un champs mod, et ces deux colonnes forment une clés unique, que je n'ai pas encore mise le temps de faire les test sans contraintes ... c'est vrai que je n'y ai pas pensé, je vais essayé en créant cette clé.

EDIT

helas non, même résultat :

Code :
1
2
3
4
5
6
7
8
9
ma TABLE memory_j_mod_card :
 
-- mod INT --- card INt ---
 
       PRIMARY KEY (mod, card);
 
ma TABLE memory_mod
 
id (INT Primaty KEY), name VARCHAR(225)  etc.
Dominique49 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2012, 20h47   #6
Membre Expert
 
Homme Eric Dureuil
Développeur informatique
Inscription : avril 2011
Messages : 874
Détails du profil
Informations personnelles :
Nom : Homme Eric Dureuil
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2011
Messages : 874
Points : 1 361
Points : 1 361
salut,

l'erreur c'est que "mod" n'est pas une colonne de ta sous requête...

regarde donc sa définition
__________________
Eric Dureuil, développeur web, c/c++, java indépendant
soyons
pensez à mettre et
ericd69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2012, 22h43   #7
Membre confirmé
 
Homme Dominique
Première S
Inscription : juillet 2010
Messages : 252
Détails du profil
Informations personnelles :
Nom : Homme Dominique
Âge : 15
Localisation : France

Informations professionnelles :
Activité : Première S

Informations forums :
Inscription : juillet 2010
Messages : 252
Points : 228
Points : 228
mm ... tu parles de la définition de 'mod' ?
je viens effectivement de voir que c'était une fonction mathématique en MySQL, mais puisque j'ai mis des backquotes autour, ça devrait passer pourtant ?
Dominique49 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2012, 22h55   #8
Membre Expert
 
Homme Eric Dureuil
Développeur informatique
Inscription : avril 2011
Messages : 874
Détails du profil
Informations personnelles :
Nom : Homme Eric Dureuil
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2011
Messages : 874
Points : 1 361
Points : 1 361
normalement oui mais vérifie la structure de ta table pour voir ce que mysql a stocké comme nom de colonne

et exécute juste ta sous requête déjà pour voir si elle passe
__________________
Eric Dureuil, développeur web, c/c++, java indépendant
soyons
pensez à mettre et
ericd69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2012, 09h44   #9
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 655
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 655
Points : 2 657
Points : 2 657
Donne le code de création de ta table.

Code :
1
2
 
CREATE TABLE memory_j_mod_card (....);
punkoff est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h57.


 
 
 
 
Partenaires

Hébergement Web