MySQL嵌套选择引用外部表?

标签 mysql

我有这个查询:

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/

相关文章:

php - 为什么我无论如何都要连接数据库

mysql - 使用选择结果并进行比较

mysql - 从一个表中提取记录并将其存储在另一张表中并包含附加数据

mysql - 在一个 select 语句中选择两个变量的语法 (MySQL)

MySQL - 选择字符串的前 10 个字节

故意在主键 AUTO_INCREMENT 列中插入 `NULL` 时 MySQL 不会失败

php - 如何在回显mysql查询结果时忽略重复行

php - 根据用户偏好查找特定记录

mysql - codeception:运行多个 sql 转储文件

php - 如果没有正确显示结果