2010-11-15 80 views
0

在MySQL中,我有一個文件表,文件夾表,和searchtags表如何使用單個mySql查詢將多個連接表的結果連接到分隔列表中?

Documents 
    ID 
    title 

Folders 
    ID 
    title 

Searchtags 
    ID 
    title 

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

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

在上面,docFolders和docSearchtags很多一對多加入表達的文件和文件夾之間的關係表,文件和searchtags。單個文檔可以有多個文件夾和多個與之關聯的搜索標籤。

我想知道是否可以創建一個單個查詢將選擇所有文檔的標題,以及屬於每個文檔的每個文件夾標題的定界列表以及定界列表每個文檔的每個searchtag標題。

例如,結果集可能是這個樣子:

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 

感謝(提前)對你的幫助

回答

2

用途:

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

感謝的快速反應。我嘗試過實現你的解決方案,但遇到了一些問題...因爲每個文檔都有多個文件夾,推測f.title也應該包裝在GROUP_CONCAT中,但是當我這樣做時,我會在定界結果集中重複出現多個文件夾標題... 有任何想法嗎? – Travis 2010-11-15 03:48:53

+0

,幾乎可以工作。然而,現在界定的搜索標題正在重複... – Travis 2010-11-15 03:54:28

+0

@ Travis:對不起 - 請參閱更新。 – 2010-11-15 03:56:22

相關問題