mysql - 子查询不访问父查询别名

标签 mysql subquery

SELECT *,
`batch`.`batch_id` as `batchId`,
`batch`.`center_id` as `centerId`,
`batch`.`scheme_id` as `schemeId`,
`batch`.`batch_start_date` as `BatchStartDate`,
(SELECT COUNT(`attendance_count`) AS `eligible_for_assessment` FROM 
     (SELECT COUNT(`mark_attendance`) AS `attendance_count` FROM `dailyattendance` 
      WHERE `mark_attendance`="p" AND `scheme_id`=`schemeId` AND `batch_id`=`batchId`
      AND `center_id`=`centerId` GROUP BY `candidate_id`) AS `sfkjsd`
      WHERE `attendance_count` > 6
)
from `batch`

在此子查询中,它返回错误“‘where 子句’中的未知列‘schemeId’”。在mysql子查询中访问第三级子查询中的父参数?

(SELECT COUNT(`attendance_count`) AS `eligible_for_assessment` FROM 
     (SELECT COUNT(`mark_attendance`) AS `attendance_count` FROM `dailyattendance` 
      WHERE `mark_attendance`="p" AND `scheme_id`=1 AND `batch_id`=2
      AND `center_id`=3 GROUP BY `candidate_id`) AS `sfkjsd`
      WHERE `attendance_count` > 6
)

此查询返回一个月内出席超过 6 天的候选人总数。我需要从父选择查询动态传递此“schemeId”。

(SELECT COUNT(*) from `enrolment` WHERE
`enrolment`.`batch_id`=`batchId` AND `enrolment`.`center_id`=`centerId`
AND `enrolment`.`ew_enrolled_for_scheme`=`schemeId`) as `enrolled_student_count`

在这个查询中,我使用父选择器schemeId和其他选择器,它给了我结果计数。但是如果我在像上面这样的子查询中的 FROM (SELECT....) 中放置另一个子查询,我提到它会给我错误。

最佳答案

scheme_id=schemeId

应该是

scheme_id=批处理.scheme_id

batch_id=batchId

应该是

batch_id=batch.batch_id

试试这个代码

SELECT *,
`batch`.`batch_id` as `batchId`,
`batch`.`center_id` as `centerId`,
`batch`.`scheme_id` as `schemeId`,
`batch`.`batch_start_date` as `BatchStartDate`,
(SELECT COUNT(`attendance_count`) AS `eligible_for_assessment` FROM 
     (SELECT COUNT(`mark_attendance`) AS `attendance_count` FROM `dailyattendance` 
      WHERE `mark_attendance`="p" AND `scheme_id`=`batch`.`scheme_id` AND `batch_id`=`batch`.`batch_id`
      AND `center_id`=`centerId` GROUP BY `candidate_id`) AS `sfkjsd`
      WHERE `attendance_count` > 6
)
from `batch`

关于mysql - 子查询不访问父查询别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49666796/

相关文章:

php - 在 require 语句中选择正确的路径

php - 使用 MySQL 和 PHP 高效处理大量数据

mysql - LEFT JOIN 无法按预期使用子查询

java - 如何将参数传递给 Hibernate 的 subselect 标签?

mysql - 如何在 SQL 中(递归地)确定等效组?

MySQL INSERT into select * from with default timestamp column

带有子查询和分组依据的 php mysqlquery

mysql - 在子查询中使用查询中的逗号分隔字符串

php - MySQL 中的子选择

c++ - 循环遍历结果集