2017-11-24 2 views
0

Ich habe Fächer Tabelle enthält Themen Details und subject_student Tabelle enthält die Themen von Studenten ausgewählt. Ich möchte alle von mehr als 2 Schülern ausgewählten Fächer auswählen und die Anzahl der Schüler für jedes von mehr als 2 Schülern ausgewählte Fach bestimmen.MYSQL aus Tabelle auswählen und aus einem anderen

Themen Tisch

------------------------------ 
ID | Name   | units 
------------------------------ 
1 | web   | 1 
2 | programming | 1 
3 | java   | 1 
4 | QA   | 1 
------------------------------ 

student_subject Tabelle

Betreff Tabelle

------------------------------ 
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 
------------------------------ 

so hier das Ergebnis muss die erste Reihe von Themen Tabelle auswählen und die 4, die die Anzahl der Studenten ist ausgewählt Web-Thema Hier ist die Abfrage:

$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) 
"; 

wenn ich laufe den Code es mir diesen Fehler gibt: Hinweis: Der Versuch, Eigentum von Nicht-Objekt zu erhalten

hier ist der PHP-Code:

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

Siehe auch: [Warum sollte ich einen MCVE für das, was mir scheint eine sehr einfache SQL-Abfrage sein?] (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

Und wh bei funktioniert nicht/was ist dein Problem? –

+0

Wenn ich die Abfrage ausführen, geben Sie mir einen Fehler: Hinweis: Versuchen, Eigenschaft von Nicht-Objekt zu erhalten –

Antwort

1

Überprüfen Sie die Abfrage nach Namen von Tabellen und Spalten 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 

Sie auch print_r in while für Testnamen verwenden können, die waren ret urned mit mysqli_fetch_array

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

braucht hier nicht eine Klammer )

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

Versuchen Sie es löschen

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

danke, es funktioniert –

Verwandte Themen