【发布时间】:2018-03-04 23:49:08
【问题描述】:
我有一个运行良好的查询,当我尝试向 clouses 添加一列时,它找不到该列并给出错误。
SELECT '1' AS `row_count`, (
SELECT
COUNT(*)
FROM
`attendances`
WHERE `program_sessions`.`id` = `attendances`.`program_session_id`
AND `attendances`.`deleted_at` IS NULL
) AS `attendances_count`
FROM
`program_sessions`
LEFT JOIN `programs` ON `programs`.`id` = `program_sessions`.`program_id`
LEFT JOIN `program_categories` ON `program_categories`.`id` = `programs`.`program_category_id`
LEFT JOIN `service_areas` ON `service_areas`.`id` = `program_categories`.`service_area_id`
LEFT JOIN `locations` ON `locations`.`id` = `programs`.`location_id`
WHERE (
LOWER(`program_categories`.`name`) LIKE "%3%" OR
LOWER(`programs`.`name`) LIKE "%3%" OR
LOWER(`locations`.`name`) LIKE "%3%" OR
(attendances_count = 3) OR
LOWER(`service_areas`.`name`) LIKE "%3%"
)
AND `program_sessions`.`deleted_at` IS NULL
MySQL said:
#1054 - Unknown column 'attendances_count' in 'where clause'
查询不知何故无法到达attendances_count。我到底做错了什么?
【问题讨论】:
-
来自
SELECT子句中相关子查询的计数是否有意义?您正在计算超过五个连接表。 -
@TimBiegeleisen 是的,必须如此。不过它们是简单的表格。
-
我将探索以下内容以了解它是否适用于您的查询:搜索
WITH语句 - stackoverflow.com/questions/3241352/… 和 dev.mysql.com/doc/refman/8.0/en/with.html 。但这不是下面提到的简单解决方案(也许这里的优化在于您只是在过滤出勤人数 = 3 的地方)。但是WITH值得研究学习,看看它是否能解决您的问题,但同样不要将其用作首选,因为似乎提到了一个更简单的解决方案
标签: mysql