2010-11-10 10 views
2

J'ai une base de données MySQL contenant les tableaux suivants:JOIN pour MySQL

Table: Professor 
Attributes: ID, ProfessorName 

Table: Class 
Attributes: ID, ClassName, SubjectID (secondary) 

Table: Subject 
Attributes: ID, SubjectName 

Table: DocCategory 
Attributes: ID, DocCategoryName 

Table: Document 
Attributes: ID, DocName, ProfessorID (secondary), ClassID (secondary), DocCategoryID (secondary) 

quelqu'un peut me diriger dans la bonne direction avec une requête pour que je reçois un rapport contenant:

une liste de tous les noms de professeur avec une deuxième colonne contenant un compte pour les documents dans la table de documents liés à ce professeur?

Merci d'avance!

Répondre

4

Utilisation:

SELECT p.professorname, 
     COUNT(*) AS numDocuments 
    FROM PROFESSOR p 
    JOIN DOCUMENT d ON d.professorid = p.id 
GROUP BY p.professorname 

Pour voir une liste de tous les professeurs - sans documents listera une valeur de zéro - utilisation:

SELECT p.professorname, 
      COALESCE(COUNT(d.id), 0) AS numDocuments 
    FROM PROFESSOR p 
LEFT JOIN DOCUMENT d ON d.professorid = p.id 
GROUP BY p.professorname 
+0

Cest parfait! Une chose cependant, il montre seulement les noms de professeur avec des documents, est-ce qu'il y a une déclaration que je peux ajouter pour montrer "0" à côté de ceux sans rapport? – r0m4n

+0

@ r0m4n: Voir mise à jour. –

+0

merci, m'a sauvé! – r0m4n