【发布时间】:2017-11-24 10:57:59
【问题描述】:
我有 subject 表包含科目详细信息,而 subject_student 表包含学生选择的科目。我想选择超过 2 名学生选择的所有科目详细信息,并获取超过 2 名学生选择的每个科目的学生人数。
科目表
------------------------------
ID | Name | units
------------------------------
1 | web | 1
2 | programming | 1
3 | java | 1
4 | QA | 1
------------------------------
student_subject 表
主题表
------------------------------
student_id | subject_id | status
------------------------------
1 | 1 | current
1 | 2 | current
2 | 1 | current
2 | 3 | current
3 | 1 | current
3 | 3 | current
4 | 1 | current
5 | 5 | current
------------------------------
所以这里的结果必须选择科目表的第一行和选择网络科目的学生数 4 这是查询:
$query= "
SELECT s.sub_ID
, s.Name
, s.units
, count(st.subject_id) as cc
from subjects as s
LEFT
JOIN students_subject as st
ON s.ID = st.subject_id
GROUP
BY st.subject_id
Having count(st.subject_id)>2)
";
当我运行代码时,它给了我这个错误: 注意:试图获取非对象的属性
这里是 PHP 代码:
global $con,$users;
$query= "SELECT s.sub_ID,s.Name, s.units,s.dept, count(st.subject_id)as cc from subjects as s LEFT JOIN students_subject as st
ON s.ID=st.subject_id GROUP BY st.subject_id Having count(st.subject_id)>2)";
//$query="SELECT * FROM subjects;";
$result=mysqli_query($con,$query);
if ( $result->num_rows == 0 ) // User doesn't exist
echo "Subjects doesn't exist!";
else { echo "
<tr>
<th>Subjects ID</th>
<th>Title</th>
<th>Units</th>
<th>Department</th>
<th>Check</th>
</tr>";
$r=0;
while($row = mysqli_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $row['sub_ID'] . "</td>";
echo "<td>" . $row['Name'] . "</td>";
echo "<td>" . $row['units'] . "</td>";
echo "<td>" . $row['cc'] . "</td>";
}
【问题讨论】:
-
什么不工作/你的问题是什么?
-
当我运行查询时,给我错误:注意:尝试获取非对象的属性
-
@SalehRefaai 您需要包含产生此错误的相关代码
-
@MKhalidJunaid 我编辑了问题并添加了代码。