2010-12-15 59 views
0

我有一個內容表,可以有不同的評論和標籤結果長度與每行相關聯。我不確定如何一次性獲取所有這些內容的信息。加入具有不同長度的評論和標籤的內容項目:D

我可以很容易地做一個查詢來獲取內容信息(id)和查詢每個表的註釋和標籤,但是這似乎沒有多少意義,如果有更好的方法。

任何提示或建議? 在此先感謝!

托馬斯

我的查詢到目前爲止是這樣的:

SELECT c.*, GROUP_CONCAT(tagWords.tagWord SEPARATOR ', ') AS tags FROM platform.contents c 
LEFT OUTER JOIN platform.contentTags ON contentTags.contentId = c.contentId 
LEFT OUTER JOIN platform.tagWords ON contentTags.tagId = tagWords.tagId 
WHERE c.contentType = 'album' LIMIT 10 

GROUP_CONCAT是偉大的,所有的,但我需要的字段從每個表和表將增長。 :/

我的表格佈局:

mysql> explain contentComments; 
+--------------+---------------------+------+-----+-------------------+-------+ 
| Field  | Type    | Null | Key | Default   | Extra | 
+--------------+---------------------+------+-----+-------------------+-------+ 
| contentId | bigint(19) unsigned | NO | MUL | NULL    |  | 
| userId  | bigint(19) unsigned | NO |  | NULL    |  | 
| message  | varchar(255)  | YES |  | NULL    |  | 
| stampCreated | timestamp   | NO |  | CURRENT_TIMESTAMP |  | 
+--------------+---------------------+------+-----+-------------------+-------+ 
4 rows in set (0.00 sec) 

mysql> explain contentTags; 
+-----------+------------+------+-----+---------+-------+ 
| Field  | Type  | Null | Key | Default | Extra | 
+-----------+------------+------+-----+---------+-------+ 
| contentId | bigint(20) | NO | MUL | NULL |  | 
| tagId  | bigint(20) | YES |  | NULL |  | 
+-----------+------------+------+-----+---------+-------+ 
    2 rows in set (0.00 sec) 

mysql> explain contents; 
+------------------+-----------------------------------------+------+-----+-------------------+----------------+ 
| Field   | Type         | Null | Key | Default     | Extra   | 
+------------------+-----------------------------------------+------+-----+-------------------+----------------+ 
| contentId  | bigint(20)        | NO | PRI | NULL    | auto_increment | 
| contentType  | enum('video','album','blogpost','news') | NO |  | NULL    |    | 
| userId   | bigint(19) unsigned      | NO | MUL | NULL    |    | 
| contentTitle  | varchar(45)        | YES |  | NULL    |    | 
| contentDesc  | varchar(255)       | YES |  | NULL     |    | 
+------------------+-----------------------------------------+------+-----+-------------------+----------------+ 

mysql> explain tagWords; 
+---------+---------------------+------+-----+---------+----------------+ 
| Field | Type    | Null | Key | Default | Extra   | 
+---------+---------------------+------+-----+---------+----------------+ 
| tagId | bigint(19) unsigned | NO | PRI | NULL | auto_increment | 
| tagWord | varchar(45)   | YES |  | NULL |    | 
+---------+---------------------+------+-----+---------+----------------+ 
2 rows in set (0.00 sec) 

回答

0

看起來我的權利,但我認爲你還需要徵求意見一GROUP_CONCAT。這可能是因爲你的大腦對於數據庫中的N到N關係的想法並不舒服,考慮到它看起來像我這樣做是正確的,這將是奇怪的:p

+0

感謝您的回覆。 我的問題是,每個評論或標籤都有多個需要在前端提供的列/字段。所以,一個字符串逗號分隔不一定是一個修復..除非我想進入爆炸的buch。 – 2010-12-15 16:48:12