正在尝试从表中选择所有student
并将其与staff
表合并,其中学生current_class
在staff
staff_classes
的数组列表中。
我在下面的查询中进行了尝试,但是当我在选定的工作人员staff_classes
中拥有多个记录时,它仅显示一条记录。请任何想法如何使它工作。
school_staffs
staff_id | staff_classes | staff_name
--------------|-----------------|---------------------------
peter123 | A,B | Peter
fara123 | A | Fara
学生
student_id | current_class | student_name
---------------|-------------------|----------------
john123 | A | John
paul123 | A | Paul
dev123 | B | Dev
heg123 | C | Heg
mag123 | C | Mag
我目前的尝试。
下面实际上要做的是列出管理A
和B
班级人员的所有学生。
SELECT st.student_name, st.student_id,
GROUP_CONCAT(st.student_id ORDER BY FIND_IN_SET(st.current_class , 'A,B'))
FROM students AS st
JOIN school_staffs AS stf ON FIND_IN_SET(st.current_class , 'A,B') > 0
GROUP BY st.current_class
假设当前登录的工作人员为peter123
,staff_classes
为A,B
上述查询的预期结果是:-
student_id | current_class | student_name
---------------|-------------------|---------------------------
john123 | A | John
paul123 | A | Paul
dev123 | B | Dev
答案 0 :(得分:0)
您还需要在student_id
中添加group_by
。
SELECT s.*, ss.staff_name FROM `students` AS s, `school_staffs` AS ss
WHERE FIND_IN_SET(s.current_class, ss.staff_classes)
GROUP BY s.current_class, s.student_id;
注意:确保
staff_classes
列包含多个逗号分隔值。单值也可以。