2010-12-15 3 views
0

私は、各行に関連するコメントとタグの結果の長さが様々であるコンテンツテーブルを持っています。私はどのように1つの急いでコンテンツの一部のこの情報のすべてを取得するのか分からない。さまざまな長さのコメントとタグを使用してコンテンツアイテムに参加する: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

返信ありがとうございました。 私の問題は、各コメントやタグに、フロントエンドで利用可能な複数の列/フィールドがあることです。だから、区切られた文字列カンマは必ずしも修正ではありません。私が爆発のブッチに入りたいのでなければ。 –

関連する問題