tution
institute | name | subject | students
--------------------------------------------
institute1 | john | maths | mary
institute1 | john | maths | stacy
institute2 | john | maths | david
institute2 | john | science | bruce
institute1 | tim | maths | steve
institute2 | tim | science | harry
institute1 | john | science | peter
每个科目的每位教师都应该有限的学生,假设每个科目都有25名学生在课堂上。
所以,在这里,我请求一个SQL查询来获取搜索研究所中每位教师的详细信息以及他们的学科强度,其中学院等于搜索的学院。
仅显示在学院与搜索学院相同的每个科目中没有25名学生实力的教师详细信息。
我能够获取数据,但需要两个查询和一些php函数才能获得结果。
这些是我的疑问
select * from tution where institute = '$search_institute'
从这个查询中我获取了institue的值。然后我构建了两个php函数来计算名称值,并且另一个函数用于检查名称值主题,然后重新检查每个主题的计数。
这是计数php函数,在另一个函数的帮助下,我将得到主题值
select count(*) from tution
where name = '$institue_name'
and subject = '$institute_subject'.
首先获取搜索机构的行,然后使用institute的值和foreach
循环以及另一个计算内置PHP函数的SQL查询,我创建一个带有计数值的数组。
问题是,我得到一个数组两个不同数组的结果作为学院 - 教师名单和教师计数,然后我不得不做很多工作,如合并和排序。
我需要一个简单的完整SQL解决方案。
答案 0 :(得分:0)
为什么不将两者合并为一个SQL?
SQL查询,用于获取搜索到的机构中每位教师的详细信息 和研究所等于搜索的主体力量 研究所。
仅显示没有25的力量的教师详细信息 每个学科的学生,其中等同于搜索 机构。
select name, subject, count(students) as Student_count
from tution
where institute = '$search_institute'
group by name, subject
having count(students) != 25
group by允许跨列聚合数据。在这里,您要按名称&分组结果集。他们的主题和计数。 where子句过滤掉结果,只提供匹配'$search_institute'
的那些机构,而having子句过滤我们没有学生数25的团体