2010-11-15 5 views
0

En MySql, j'ai une table de documents, une table de dossiers, et une table searchtagsComment concaténer les résultats de plusieurs tables de jointure dans une liste délimitée à l'aide d'une seule requête mySql?

Documents 
    ID 
    title 

Folders 
    ID 
    title 

Searchtags 
    ID 
    title 

docFolders 
    docID -> Documents.ID 
    folderID -> Folders.ID 

docSearchtags 
    docID -> Documents.ID 
    searchtagID -> Searchtags.ID 

Dans ce qui précède, docFolders et docSearchtags sont nombreux à plusieurs tables de jointure exprimant le rapport entre les documents et les dossiers, et documents et tags de recherche. Un seul document peut avoir plusieurs dossiers et plusieurs tags de recherche associés.

Je me demande s'il est possible de créer une unique requête qui sélectionneront le titre de tous les documents, ainsi qu'une liste delimmited de tous les titres du dossier qui appartient à un chaque document, et également une liste delimmited de chaque titre de recherche qui appartient à chaque document.

Par exemple, le ResultSet pourrait ressembler à ceci:

RESULT 
docTitle     | folderTitles   | searchtagTitles 
The Quick Brown Fox  | foxes, colours   | Bushy tails, browny, foxy 
The Slow Green Turtle  | turtles, colours  | Hard shells, slimy, turtle-soup 
The Cute Fluffy Bunny  | bunnies, cute   | Fluffy, rabbit, rabbit-stew 

Merci (à l'avance) pour votre aide

Répondre

2

Utilisation:

SELECT d.title AS doctitle, 
     GROUP_CONCAT(DISTINCT f.title) AS foldertitles, 
     GROUP_CONCAT(st.title) AS searchtagtitles 
    FROM DOCUMENTS d 
    JOIN DOCFOLDER df ON df.docid = d.id 
    JOIN FOLDERS f ON f.id = dc.folderid 
    JOIN DOCSEARCHTAGS dsc ON dsc.docid = d.id 
    JOIN SEARCHTAGS st ON st.id = dsc.searchtagid 
GROUP BY d.title 
+0

merci pour la réponse rapide. J'ai essayé d'implémenter votre solution, mais je rencontre des problèmes ... parce qu'il y a plusieurs dossiers par document, f.title devrait aussi être inclus dans un GROUP_CONCAT, mais quand je le fais, je reçois plusieurs titres de dossiers répétés dans le jeu de résultats delimmited ... Des idées? – Travis

+0

qui fonctionne presque. Cependant, maintenant les titres du carnet de recherche delimmited sont répétés ... – Travis

+0

@Travis: Désolé - voir la mise à jour. –

Questions connexes