繁体   English   中英

基数违规:使用的 SELECT 语句具有不同的列数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM