【发布时间】:2014-05-02 15:23:09
【问题描述】:
这是我的查询:
$subquery = "(SELECT `id`, `mark`, `date`, `session` FROM `student_marks` WHERE `student_id` = '" . $studentId . "')";
$q = $this->select()
->distinct()
->setIntegrityCheck(false)
->from($this->_name, array('name AS subjectName', 'student_marks' => new Zend_Db_Expr($subquery)))
->joinLeft('class_teachers', 'class_teachers.subject_id = subjects.id', '')
->joinLeft('teachers', 'teachers.id = class_teachers.teacher_id', array('teachers.name AS teacherName', 'teachers.family AS teacherFamily'))
->joinLeft('student_session_marks', 'student_session_marks.subject_id = subjects.id', array('student_session_marks.id AS sessionMarkId', 'student_session_marks.mark AS sessionMarkName', 'student_session_marks.session AS sessionMarkSession'))
->where('student_session_marks.student_id = ?', $studentId);
查询打印:
SELECT DISTINCT `subjects`.`name` AS `subjectName`,
(SELECT `id`, `mark`, `date`, `session` FROM `student_marks` WHERE `student_id` = '6') AS `student_marks`,
`teachers`.`name` AS `teacherName`, `teachers`.`family` AS `teacherFamily`, `student_session_marks`.`id` AS `sessionMarkId`,
`student_session_marks`.`mark` AS `sessionMarkName`, `student_session_marks`.`session` AS `sessionMarkSession`
FROM `subjects`
LEFT JOIN `class_teachers` ON class_teachers.subject_id = subjects.id
LEFT JOIN `teachers` ON teachers.id = class_teachers.teacher_id
LEFT JOIN `student_session_marks` ON student_session_marks.subject_id = subjects.id
WHERE (student_session_marks.student_id = '6')
当我删除子查询时,我的查询成功,否则有这个错误:
SQLSTATE[21000]: Cardinality violation: 1241 Operand should contain 1 column(s).
【问题讨论】:
标签: php mysql zend-framework subquery