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'
в этом суб-запросе возвращается обратная ошибка, "Неизвестный столбец" схемаId "в разделе" where clause ". в подзапросе 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
нужно передать этот " 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....)
в подзапросе, как указано выше, я упоминаю, что он даст мне ошибку.
Да, правильно, мы не можем передать первый уровень псевдонима на третьем уровне подзапроса. Вам нужно выбрать столбец третьего уровня, а затем сравнить его со вторым уровнем.
SELECT *,
'batch'.'scheme_id' as 'schemeId',
'batch'.'center_id' as 'centerId',
'batch'.'batch_id' as 'batchId',
(SELECT COUNT('attendance_count') AS 'eligible_for_assessment' FROM
(SELECT COUNT('mark_attendance') AS 'attendance_count',
'center_id' AS 'daCenterId', 'batch_id' AS 'daBatchId',
'scheme_id' AS 'daSchemeId' FROM 'dailyattendance'
WHERE 'mark_attendance'="p" GROUP BY 'candidate_id')
AS 'sfkjsd'
WHERE 'attendance_count' > 6 AND 'daCenterId'='centerId'
AND 'daBatchId'='batchId' AND 'daSchemeId'='schemeId')
FROM 'batch'
Надеюсь, это поможет другим!
Насколько я знаю, вы не сможете пройти "schemId". Попробуйте использовать другой подзапрос в предложении where.
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' a
WHERE 'mark_attendance'="p" AND 'batch_id'='batchId'
AND 'scheme_id' in (select 'scheme_id' from 'batch')
AND 'center_id'='centerId'
GROUP BY 'candidate_id') AS 'sfkjsd'
WHERE 'attendance_count' > 6)
from 'batch'
batch.batch_id as batchId
Этот селектор я использую как ссылку в подзапросе, если я создаю объединение в подзапросе, я не могу использовать свой селектор.
="p" AND
batch_id =
batchId` И scheme_id
в (выберите отличный scheme_id
из 'batch')
scheme_id
= schemeId
должно быть
scheme_id
= batch
. 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'
Unknown column 'batch.scheme_id' in 'where clause'
. если мы присоединяемся к таблице пакетной обработки, то у нас нет никаких ссылок из родительского селектора, и результат не будет возвращаться, как мы хотим.
scheme_id
=schemeId
Иbatch_id
=batchId
с правой стороны, это не должен бытьschemeId
. это должно быть фактическое значение, которое вы сравниваете.batch.scheme_id as schemeId
для подзапроса.