班级视图.sql 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. DROP VIEW IF EXISTS class_data;
  2. CREATE VIEW class_data AS
  3. SELECT t1.id, t1.name, t1.code,t2.name AS gradeName,t1.grade_id AS gradeId,t3.name AS teacherName,t3.mobile AS teacherMobile,t1.teacher_id AS teacherId,
  4. t4.name AS enrollTypeCn,t1.enroll_type AS enrollType,t5.name AS classTypeCn,t1.class_type AS classType,
  5. t6.name AS classroomName,t1.classroom_id AS classroomId,t7.name AS orgName,t1.org_id AS orgId,t8.name AS majorSetName,t1.major_set_id AS majorSetId,
  6. t1.is_order_class AS isOrderClass,t1.is_graduate AS isGraduate,
  7. (SELECT COUNT(DISTINCT(a1.id)) FROM xjr_user a1
  8. LEFT JOIN base_student_school_roll a2 ON a1.id = a2.user_id
  9. WHERE a1.delete_mark = 0 AND a2.delete_mark = 0
  10. AND a1.gender = 'SB10001' AND a2.class_id = t1.id
  11. AND a2.archives_status = 'FB2901') AS maleCount,
  12. (SELECT COUNT(DISTINCT(a1.id)) FROM xjr_user a1
  13. LEFT JOIN base_student_school_roll a2 ON a1.id = a2.user_id
  14. WHERE a1.delete_mark = 0 AND a2.delete_mark = 0
  15. AND a2.class_id = t1.id AND a2.stduy_status = 'FB3002'
  16. AND a2.archives_status = 'FB2901' AND a1.gender = 'SB10001') AS maleStayCount,
  17. (SELECT COUNT(DISTINCT(a1.id)) FROM xjr_user a1
  18. LEFT JOIN base_student_school_roll a2 ON a1.id = a2.user_id
  19. WHERE a1.delete_mark = 0 AND a2.delete_mark = 0
  20. AND a2.class_id = t1.id AND a2.stduy_status = 'FB3001'
  21. AND a2.archives_status = 'FB2901' AND a1.gender = 'SB10001') AS maleNotStayCount,
  22. (SELECT COUNT(DISTINCT(a1.id)) FROM xjr_user a1
  23. LEFT JOIN base_student_school_roll a2 ON a1.id = a2.user_id
  24. WHERE a1.delete_mark = 0 AND a2.delete_mark = 0
  25. AND a1.gender = 'SB10002' AND a2.class_id = t1.id
  26. AND a2.archives_status = 'FB2901') AS femaleCount,
  27. (SELECT COUNT(DISTINCT(a1.id)) FROM xjr_user a1
  28. LEFT JOIN base_student_school_roll a2 ON a1.id = a2.user_id
  29. WHERE a1.delete_mark = 0 AND a2.delete_mark = 0
  30. AND a2.class_id = t1.id AND a2.stduy_status = 'FB3002'
  31. AND a2.archives_status = 'FB2901' AND a1.gender = 'SB10002') AS femaleStayCount,
  32. (SELECT COUNT(DISTINCT(a1.id)) FROM xjr_user a1
  33. LEFT JOIN base_student_school_roll a2 ON a1.id = a2.user_id
  34. WHERE a1.delete_mark = 0 AND a2.delete_mark = 0
  35. AND a2.class_id = t1.id AND a2.stduy_status = 'FB3001'
  36. AND a2.archives_status = 'FB2901' AND a1.gender = 'SB10002') AS femaleNotStayCount,
  37. (SELECT COUNT(DISTINCT(a1.id)) FROM xjr_user a1
  38. LEFT JOIN base_student_school_roll a2 ON a1.id = a2.user_id
  39. WHERE a1.delete_mark = 0 AND a2.delete_mark = 0
  40. AND a2.class_id = t1.id
  41. AND a2.archives_status = 'FB2901') AS allCount
  42. FROM base_class t1
  43. LEFT JOIN base_grade t2 ON t1.grade_id = t2.id
  44. LEFT JOIN xjr_user t3 ON t1.teacher_id = t3.id
  45. LEFT JOIN xjr_dictionary_detail t4 ON t4.code = t1.enroll_type
  46. LEFT JOIN xjr_dictionary_detail t5 ON t5.code = t1.class_type
  47. LEFT JOIN base_classroom t6 ON t6.id = t1.classroom_id
  48. LEFT JOIN xjr_department t7 ON t7.id = t1.org_id
  49. LEFT JOIN base_major_set t8 ON t8.id = t1.major_set_id
  50. WHERE t1.delete_mark = 0;