[英]Cardinality violation: The used SELECT statements have a different number of columns
收到列不匹配的错误,但我检查了它们是。 这是 SQL 脚本:
SELECT student_no
, firstname
, lastname
, middlename
, sub_classes.name as sub_class_name
FROM
(SELECT payments.students_student_no as student_no
, SUM(payments.amount) as amount
FROM students
JOIN payments
ON payments.students_student_no = students.student_no
JOIN sub_classes
ON students.sub_classes_id = sub_classes.id
WHERE payment_type_id = ?
AND academic_year = ?
AND term = ?
GROUP
BY student_no
UNION ALL
SELECT student_no
, firstname
, lastname
, middlename
, sub_classes.name as sub_class_name
FROM students
JOIN sub_classes
ON students.sub_classes_id = sub_classes.id
GROUP
BY student_no
) results
GROUP
BY student_no
问题在于 2 个 select 语句中的列数。 请看下文。
SELECT payments.students_student_no as student_no, SUM(payments.amount) as amount --> number of columns should be same as the below select statement. Also the datatype of each column
FROM students
...
...
GROUP BY student_no
UNION ALL
SELECT student_no, firstname, lastname, middlename, sub_classes.name as sub_class_name --> Number of columns here should be same as the upper select statement. Also the datatype of each column
FROM students
...
GROUP BY student_no
在 UNION ALL 的第二个 select 中,您的列数与第一个相同。 在下面的代码中,已将 (firstname, lastname, middlename, sub_classes.name ) 更改为 null
SELECT student_no, firstname, lastname, middlename, sub_classes.name as sub_class_name
FROM (
SELECT payments.students_student_no as student_no, SUM(payments.amount) as amount
FROM students INNER JOIN payments ON payments.students_student_no=students.student_no
INNER JOIN sub_classes ON(students.sub_classes_id=sub_classes.id) WHERE payment_type_id=? AND academic_year=? AND term=? GROUP BY student_no
UNION ALL
SELECT student_no,null
FROM students
INNER JOIN sub_classes ON students.sub_classes_id=sub_classes.id
) results
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.