2011-12-07 4 views
0

J'ai 3 tables enseignant sujet et devoirs. Quand un enseignant se connecte, je veux afficher tous les sujets, peu importe s'il est l'enseignant et peu importe s'il y a des dossiers connexes ou non. S'il n'y a pas les documents connexes (missions) je veux afficher 0.MYSQL afficher tous les enregistrements et compter les enregistrements connexes

Teacher Table: Teacher_PK, Teacher_name  
Subject Table: Subject_PK, Teacher_fk, Subject_name, 
Assignments Table: Assignment_PK, Subject_fk, assignment_name 

En ce moment je l'ai comme ceci:

"SELECT *, count(a.subject_fk) 
     FROM assignment AS b 
     LEFT OUTER JOIN subject AS a 
     ON a.subject_fk = b.subject_PK 
     WHERE a.teacher_fk = $sessionVar 
     GROUP BY b.subject_fk 
     ORDER BY b.subject_name ASC"; 

Le problème avec cette requête est qu'il ne montre pas tous sujets, il montre seulement le sujet s'il y a des tables connexes.

English (3) 
Math(2) 

Ce que je veux afficher est

English(3) 
Math(2) 
Gym(0) 
Science(0) 

Merci pour toute aide. Tous les sujets de la table Objet

+0

Afficher seulement les champs des tables est pas très utile. [Exemple de code] (http://sscce.org/) explique plus; veuillez utiliser 'CREATE TABLE' et' INSERT' pour des exemples de données. – outis

Répondre

1
SELECT 
    s.*, 
    count(a.assignment_pk) as numAssignments 
FROM 
    Subject s 
    LEFT OUTER JOIN Assignments a ON 
    s.Subject_pk = a.Subject_fk AND 
    a.teacher_fk = $sessionVar 
GROUP BY 
    s.* 
ORDER BY 
    s.subject_name ASC 

modifier - déplacer le filtre id enseignant à la section de jointure externe

+0

ne fonctionne pas, il montre encore seulement deux éléments. Lorsque je supprime la clause where, elle affiche tous les sujets, mais ne filtre pas le nombre d'affectations en fonction de l'utilisateur. – user982853

+0

Oh oui, je vois comment ça aurait pu être un problème. Je l'ai réparé maintenant - déplacé la condition à l'endroit approprié dans la clause de jointure externe –

+0

BAM! Cela fonctionne parfaitement. Que ferais-je sans stackoverflow. Vous et ce blog m'a sauvé des heures d'auto-enseignement, merci beaucoup. – user982853

Questions connexes