ユニオンを追加してから機能しないクエリのスナップショットを次に示します。
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 - 不明な列 'fin05_usager.idUsager' in 'where 句'
fin05_usager.idUsager を削除して直接「6」を使用すると、機能します。
ユニオンを削除し、2 つの選択のうちの 1 つだけを使用すると、機能します (FROM fin05_usager_reputation を使用するか、FROM cc_badge、fin05_usager_badge.
UNION を使用すると、idUsager の検索に関するエラーが表示され、ユニオンがないとエラーが検出されないのはなぜですか?
簡略化されたスキーマ:
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 のサブクエリ内で使用する必要があります。