0

私は3つのテーブルタグシステム、トピック、タグ、タグトピックを持っています。

トピックを表示するときに、トピックごとにさまざまなタグを表示したいと思います。1つのトピックに複数のタグがあるため、以下のクエリを実行すると、複数の行が表示され、トピックは各行に1回ずつ、複数回表示されます。私は列で数学的なことを何もしていないので、groupbyを使用できるとは思いません。私が本当に望んでいるのは、トピックごとに、トピックを表示してから、(Siriの場合)、「iphone、smartphone、Siri」などの投稿のタグのリストです。テーブル:

topics
id | name |userid
tags
id | topicid | topicname
tagtopic
id | tagid | topicid '

$sql = "SELECT * FROM `topics` t
LEFT JOIN `tagtopic` tagtopic
on t.id = tagtopic.topicid
WHERE t.id= '12'";

while($row = mysql_fetch_array($res))レコードセットの行を表示するように表示が行われることに言及する必要があります。トピックを1回表示したいのですが、タグ用に複数の行が作成されているため、複数回表示されています。

結合をあきらめてサブクエリを実行する必要がありますか?提案をありがとう。

4

2 に答える 2

2

GROUP_CONCATを実行すると、すべてのタグがコンマで区切られた1つのフィールドに配置されます。

SELECT GROUP_CONCAT(tt.tagid) FROM topics t
JOIN tagtopic tt ON tt.topicid = t.topicid
WHERE t.id=12
GROUP BY t.id
于 2012-06-01T13:55:50.883 に答える
0

ON AND ONLY ONトピックに対してこのクエリを実行した場合(によって差し引かれ ますWHERE t.id = 12)ループ内:
while

var first = true;
while($row = mysql_fetch_array($res)) {
    if(first) {
        // PRINT THE TOPIC NAME
        $first = false;
    }
    // PRINT THE TAG ROW
}
于 2012-06-01T14:01:13.860 に答える