sql >> データベース >  >> RDS >> Mysql

コメントと返信のためのデータベース設計

    ParentIDフィールドを含む1つのテーブルを使用するだけで済みます。レコードに値がない場合はコメント、それ以外の場合は(コメントまたは返信のいずれかに対する)返信です。

    レコードのParentIDレコードを照会できます(それを検査します ParentID)この返信がコメントに対するものか返信に対するものかを確認します。

    編集 :上記はかなり実用的な解決策です。ただし、正規化されたバージョンを使用するには、1つのCommentsテーブル(ParentIDなし)を保持し、CommentIDとResponseIDを持つReplyToテーブルを作成します。これらは両方ともCommentsテーブルのレコードのIDです。

    このアイデアを使用して、次のSQLは、コメントと、コメントがある各返信の各コメントへの「返信」を表示します。

    select c.comment, r.comment as reply
    from comment as c, comment as r, replyto as rt
    where c.ID = rt.CommentID
    and r.ID = rt.ReplyID
    

    Dimitriiが指摘しているように、返信のないコメントは表示されません。このためには、外部結合クエリが必要です(構文をテストしていません):

    SELECT c.comment, r.comment as reply,
    from Comment c 
      left outer join Comment r on c.id = r.id  
      left outer join replyto rt on rt.responseid = r.id
    



    1. proxysql-admin代替-ClusterControlProxySQLGUI

    2. SELECT*存在しない場所

    3. 警告:mysqli_query():mysqliをフェッチできませんでした

    4. 条件に基づいてクエリを更新する