Inconnu de la colonne dans la sous-requête clause where
Je vais avoir un problème dans la clause where de mon INNER JOIN sous-requête. Je suis de la réception d'un inconnu colonne d'erreur pour M.idMembre
. J'ai essayé d'utiliser le nom de la table à la place de l'alias, mais j'obtiens le même problème. J'ai aussi essayé de supprimer la clause where de la requête et de l'ajout de cette condition dans la clause après la sous-requête. Cependant, je vais avoir le même problème de toute façon. Je pense que c'est quelque chose d'évident qui me manque ici.
SELECT DISTINCT M.`idMembre` , `couponsTypes`.`maxCouponType`
FROM membres AS `M`
INNER JOIN (
SELECT idMembre, MAX( coupons.`idType` ) AS `maxCouponType`
FROM coupons
WHERE coupons.`idMembre` = M.`idMembre`
GROUP BY idMembre
) AS `couponsTypes`
ON M.`idMembre` = couponsTypes.`idMembre`
ORDER BY maxCouponType DESC
Laissez-moi savoir si vous avez besoin de plus d'informations.
Vous ne semblez pas à utiliser tous les critères de jointure inner join ... ...
J'ai aussi essayé avec des INNER JOIN format mais j'obtiens le même message d'erreur pour cette colonne.
À l'aide de l'alias pour les coupons de table me donne un inconnu de la colonne en question aussi.
J'ai aussi essayé avec des INNER JOIN format mais j'obtiens le même message d'erreur pour cette colonne.
SELECT DISTINCT M.idMembre, couponsTypes.maxCouponType FROM membres AS M INNER JOIN (SELECT MAX(coupons.idType) AS maxCouponType FROM coupons) AS couponsTypes ON M.idMembre = coupons.idMembre ORDER BY maxCouponType DESC
À l'aide de l'alias pour les coupons de table me donne un inconnu de la colonne en question aussi.
OriginalL'auteur oliboon | 2012-12-18
Vous devez vous connecter pour publier un commentaire.
Vous n'êtes pas autorisé à faire référence externe tables dans une sous-requête dans une clause de jointure. Une façon de résoudre ce problème est de faire un
group by
dans la sous-requête basée sur la condition de jointure:Mais, vous n'avez pas besoin de la
membres
tableau. Bien que référencé à l'extérieurselect
, il est équivalent à l'id de membre dans les coupons de type tableau. Donc, vous pouvez écrire votre requête comme suit:C'est probablement le plus simple et le plus efficace de formulation.
membre
table? Pouvez pas obtenir ma tête autour de ça, mais je viens à peine arrivé à la maison à partir d'un plutôt bien arrosée déjeuner...Dans ce cas, il n'est pas réellement une différence. Le
distinct
supprime les doublons. Je ne voudrais pas écrire la requête de cette façon, mais il n'y a pas une différence.Bon point sur
membres
inutile de trop.J'ai essayé le second format et il fonctionne. Cependant, je ne ont besoin les membres des tables parce que je utiliser les résultats de la requête pour afficher les membres sur la page. J'ai essayé avec le groupe, mais je continue de recevoir un inconnu colonne pour
M.idMembre
. J'ai édité la requête dans ma question.C'est parce que j'ai malencontreusement laissé la
where
clause dans la sous-requête. Je l'ai corrigé.OriginalL'auteur Gordon Linoff
Votre sous-requête n'a pas accès aux tables dans la requête externe. Qui est, le
membres
table (aliasM
) n'est pas disponible au moment de lacouponsTypes
sous-requête est évaluée.Cependant, une telle sous-requête ne devrait pas être nécessaire dans ce cas, il vous suffit de joindre les tables directement de groupe et le résultat:
OriginalL'auteur eggyal