Cette table est reliée à une table Author via une association Published_by_author pour lister les auteurs.
Elle est aussi reliée à une table Org via une association Published_by_org pour lister les organisations responsables de la publications.
Et pour finir, elle aussi aussi reliée à une table Zine via une association From_issue pour indiquer que le document est tiré d'un magasine.
Ta structure et ta requête supposent le MCD suivant :
paper -0,n----publier----0,n- author
|----------0,n----publier----0,n- org
|----------0,n----publier----1,1- From_issue
La dernière association est bizarre ! Ne devrait-elle pas plutôt être celle-ci ?
paper -0,n----publier----0,n---- zine
Ou bien, si un paper n'est publié que par un seul zine ?
paper -1,1----publier----0,n- zine
Dans ta requête, il y a également une condition de jointure étonnante :
JOIN Org ON Org.name=Published_by_org.org
La table Org n'a t-elle pas un identifiant id comme les autres tables ? Ce serait mieux !
Ces bizarreries mises à part, essaie cette requête :
1 2 3 4 5 6 7 8 9 10 11
| SELECT p.title,
GROUP_CONCAT(a.name) AS Authors,
GROUP_CONCAT(Org.name) AS Orgs,
fi.zine
FROM Paper AS p
LEFT OUTER JOIN Published_by_author AS pa ON pa.paper = p.id
LEFT OUTER JOIN Author AS a ON a.id = pa.author
LEFT OUTER JOIN Published_by_org AS po ON po.paper = p.id
LEFT OUTER JOIN Org AS o ON o.id = po.org
LEFT OUTER JOIN From_issue AS fi ON fi.paper = p.id
GROUP BY p.title |
Partager