在mysql和php中获取老师和主题明智的细节

时间:2011-12-17 10:53:03

标签: php mysql

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解决方案。

1 个答案:

答案 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的团体