2010-02-12 5 views
0

Je suis en train d'exécuter une requête imbriquée mais je reçois cette erreur,erreur mySQL besoin d'aide

#1241 - Operand should contain 1 column(s)

c'est la requête que je suis en train de courir,

SELECT * 
FROM `categoryTable` 
WHERE `categoryId` NOT 
IN (
SELECT `categoryTable`.`categoryId` , `categoryTable`.`categoryTitle` , `userMenuTable`.`menuEntryId` 
FROM (
`categoryTable` 
) 
LEFT JOIN `userMenuTable` ON `categoryTable`.`categoryId` = `userMenuTable`.`categoryId` 
WHERE `userMenuTable`.`cookieId` = 'bang4b696152b4869' 
) 
LIMIT 0 , 30 

Répondre

0

La 5ème ligne doit être

SELECT `categoryTable`.`categoryId` 

par exemple, il ne doit faire référence qu'à la catégorie.
En d'autres termes, avec le prédicat WHERE xyz [NOT] IN (SELECT ..., il ne devrait y avoir qu'une seule colonne dans la sélection imbriquée, l'une correspondant à la colonne "xyz" mais bien sûr pas nécessairement la même. La raison en est que SQL ne saurait pas quelle colonne de la requête imbriquée utiliser pour la comparaison avec la colonne "xyz"; une moindre raison est que les autres colonnes sont inutiles, pourquoi les amener?

+0

si vous comptez de 0 :) meen 5ème ligne? –

+0

LOL, Charles, c'est vrai, je voulais dire le 5ème - en conséquence - je suis resté à zéro pendant trop longtemps ;-) – mjv

0

Oui. Je suis d'accord avec @mjv, essentiellement vous vérifier si categoryId est pas dans la liste des

`SELECT `categoryTable`.`categoryId` , `categoryTable`.`categoryTitle` , `userMenuTable`.`menuEntryId` 
FROM (
`categoryTable` 
` 

Vous devez mentionner un seul champ categoryID et il vérifiera si elle est pas dans cette liste.

Espérons que cela a du sens.