2017-11-24 4 views
0

과목 테이블에 과목 세부 정보가 있고 subject_student 테이블에 학생이 선택한 과목이 있습니다. 2 명 이상의 학생이 선택한 모든 과목 세부 정보를 선택하고 2 명 이상의 학생이 선택한 각 과목의 학생 수를 확인하고 싶습니다.MYSQL 테이블에서 선택하고 다른 테이블에서 계산

주제 테이블

------------------------------ 
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를 선택해야합니다 웹 제목 다음은 검색어입니다.

01 2,311,

나는 그것이 나에게이 오류주는 코드를 실행하면 공지 사항 :

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>"; 
     } 
+0

참조 : [왜 나에게 보이는위한 MCVE을 제공해야 매우 간단한 SQL 쿼리입니까?] (https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a -very-simple-sql-query) – Strawberry

+0

그리고 wh 에서 작동하지 않습니다/당신의 문제는 무엇입니까? –

+0

쿼리를 실행할 때 오류가 발생했습니다. 알림 : 비 객체의 속성을 얻으려고 시도합니다. –

답변

1

테이블의 이름에 대한 쿼리를 확인 : 비 객체 여기

의 속성을 얻으려고 노력은 PHP 코드입니다 과 열 Subjects(ID,Name,units), students_subject(student_id,subject_id,status) :

SELECT 
    sb.id AS sub_ID, -- !!! 
    sb.Name, 
    sb.units, 
    COUNT(st.student_id) AS cc 
FROM Subjects sb 
JOIN students_subject st ON st.subject_id=sb.id 
GROUP BY sb.id,sb.name,sb.units 
HAVING COUNT(st.student_id)>2 

또한 RET했다 테스트 이름을 whileprint_r을 사용할 수 있습니다 삭제 )

$query= "... Having count(st.subject_id)>2)"; // <-- 

시도 브라켓이 필요하지 않습니다 여기에 mysqli_fetch_array

while($row = mysqli_fetch_array($result)) 
{ 
    print_r($row); 
    ... 

와 urned 그것은

$query= "... Having count(st.subject_id)>2"; 
+0

감사합니다. 작동 중입니다. –

관련 문제