2017-11-24 7 views
0

件名テーブルには件名の詳細が含まれ、件名テーブルには学生が選択した件名が含まれています。 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なければなりませんウェブの件名 ここに質問があります:

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

は、テーブルの名前のためのクエリをチェックそして、列Subjects(ID,Name,units), students_subject(student_id,subject_id,status)

あなたはまた、RETたテスト名の whileprint_rを使用することができます
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 

削除する)

$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

ありがとう、それは働いている –

関連する問題