0

1 の 3/4 テーブルから次のデータを取得しようとしていますMysql queryが、可能でしょうか? テーブルは

TOPIC
topicid (FK)(PK)
groupid
topic
user

LIKED
likeid
topicid (FK)
user

COMMENT
commentid (PK)
topicid (FK)
comment
user

トピックを作成し、一意の topicid を使用して TOPIC テーブルに格納します。groupid を使用して各トピックをグループ化します。他のテーブルには、topicid ごとに 0 個以上のデータがある場合があります。

特定のグループの各トピックを取得しようとしており、関連するテーブルから他のデータも取得しようとしています。mysqlで複数の1対多のテーブルを結合する方法を確認しましたか? いくつかのアイデアが得られましたが、それは、そのテーブル (好きなユーザー) と (ユーザーとそのコメント) から詳細を取得したいときのカウントです。

私が試してみました

SELECT t.topicid,
       topic,
       group_concat(DISTINCT likeid,l.user SEPARATOR '|'),
       group_concat(DISTINCT commentid,comment,c.user SEPARATOR '|') AS comments
FROM TOPIC t
LEFT JOIN LIKE l ON l.topicid = t.topicid
LEFT JOIN COMMENT c ON c.topicid = t.topicid
WHERE t.groupid='some_value'
GROUP BY t.topicid

これは部分的に機能しますが、詳細を取得しますが、グループにトピックが 1 つある場合のみです。グループに 2 つ以上のトピックがある場合、concat詳細は最初のレコードにのみ保存され、後のトピックにはいいねやコメントは表示されません。

Mysql function誰かがこれまたは私が見逃している特定のものを修正するのを手伝ってくれませんか

4

1 に答える 1