这是自从我添加联合以来不起作用的查询的快照。
SELECT fin05_usager.idUsager,
(SELECT sum(nombreReputation) as nombreReputation
FROM (SELECT SUM(nombreReputationGagner) as nombreReputation
FROM fin05_usager_reputation
WHERE fin05_usager_reputation.idUsager = fin05_usager.idUsager
GROUP BY fin05_usager_reputation.idUsager
UNION
SELECT SUM(cc_badge.valeurEnReputation) as nombreReputation
FROM cc_badge, fin05_usager_badge
WHERE fin05_usager_badge.idBadge = cc_badge.idBadge
AND fin05_usager_badge.idUsager = fin05_usager.idUsager) as repuUnion
) as repu
FROM fin05_usager
WHERE fin05_usager.idUsager = 6
错误是:#1054 - 'where 子句'中的未知列'fin05_usager.idUsager'
如果我删除 fin05_usager.idUsager 并直接使用“6”,它确实有效。
如果我删除联合并仅使用 2 个选择中的一个,则它可以工作(如果我使用 FROM fin05_usager_reputation 或另一个 FROM cc_badge、fin05_usager_badge。
为什么在使用 UNION 时会出现查找 idUsager 的错误,而没有 union 则找不到错误?
架构简化:
fin05_usager: idUsager int(8)
fin05_usager_reputation : idUsager int(8), nombreReputationGagner int(4)
cc_badge : idBadge int(4), valeurEnReputation int(4)
fin05_usager_badge : idUsager int(8), idBadge int(4)
笔记:
我不能直接在查询中执行子查询。我必须在 select 的子查询中使用它,因为实际上,查询非常大并且已经包含 Group 等。