我有这个查询:
SELECT
course_category.id AS languageId,
course_category.code AS languageCode,
course_category.name AS languageName,
(
SELECT
SUM(gradebook_result.score)
FROM
gradebook_result
JOIN
gradebook_evaluation ON gradebook_evaluation.id=gradebook_result.evaluation_id
JOIN
gradebook_category ON gradebook_category.id=gradebook_evaluation.category_id
WHERE
gradebook_category.course_code=course_category.code
) AS languageWordsTranslated
FROM
course_category
WHERE
course_category.code != 'GEN'
ORDER BY
name
ASC
问题发生在嵌套 SELECT 内部,我在在线 SELECT 中引用 course_category 表时遇到错误:
WHERE
gradebook_category.course_code=course_category.code
给出错误:
Unknown column 'course_category.code' in 'where clause'
我之前曾在其他项目中做过此查询,唯一的区别是这个查询内部有联接。有什么想法吗?
编辑:我删除了联接并进行了硬编码:
WHERE
course_category.code = 'ARA'
看起来连接搞砸了,有什么办法可以解决这个问题吗?
最佳答案
尝试以不同的方式进行操作,使用子查询并加入它:
SELECT
course_category.id AS languageId,
course_category.code AS languageCode,
course_category.name AS languageName,
t.total AS languageWordsTranslated
FROM
course_category
JOIN (
SELECT gradebook_category.course_code, SUM(gradebook_result.score) as total
FROM gradebook_result
JOIN gradebook_evaluation ON gradebook_evaluation.id=gradebook_result.evaluation_id
JOIN gradebook_category ON gradebook_category.id=gradebook_evaluation.category_id
GROUP BY gradebook_category.course_code
) t ON t.course_code = course_category.code
WHERE
course_category.code != 'GEN'
ORDER BY
name
ASC
关于MySQL嵌套选择引用外部表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9614139/