說例如,我有一個帶標籤的簡單Blog。我有一個Blog表格,一個Tag表格和一個TagRelation表格。我想運行一個查詢,並獲取每個博客帖子在其單個行中的所有相關數據,包括標籤。將所有查詢結果分組到單個行中
SELECT Tag.id AS 'Tag.id', Tag.name AS 'Tag.name', Blog.id AS 'Blog.id', Blog.author AS 'Blog.author', Blog.title AS 'Blog.title', Blog.content AS 'Blog.content'
FROM Blog
INNER JOIN TagRelation ON TagRelation.target = Blog.id
INNER JOIN Tag ON Tag.id = TagRelation.Tag
WHERE Blog.id = '101'
該查詢會給我一個排的每個標籤,每個相同的博客文章數據後ID 101,並加入GROUP BY Blog.id
會給我只有一排,但無論是任意第一標籤結果。
我想是這樣的:
Blog.id | Blog.author | Blog.title | Blog.content | Tag.id | Tag.name | Tag.id | Tag.name
-----------------------------------------------------------------------------------------
101 | someone | something | lolstuff | 1 | tag1 | 2 | tag2
所以,我的客戶端代碼可以很容易地解析成的對象。這可能在MySQL中,而不處理同一博客ID的多個匹配的行或進行子查詢只是爲了獲得每個職位的標籤? (實際的數據庫,當然是更大,比這更復雜,我想要做的儘可能多的加入成爲可能。)
你不能在一般情況下這樣做(假設給定博客文章中有任意數量的標籤)。但是,在應用程序代碼中迭代列而不是行會更容易嗎? – RandomSeed