sql >> Database teknologi >  >> RDS >> Mysql

Databasedesign til kommentarer og svar

Du kan bare bruge en tabel, som indeholder et ParentID-felt. Hvis posten ikke har nogen værdi, er den en kommentar, ellers er den et svar (enten på en kommentar eller et svar).

Du kan forespørge på postens ParentID-post (undersøg den er ParentID) for at se, om dette svar er på en kommentar eller et svar.

Rediger :Ovenstående er en ret praktisk løsning. Men for at gå med en normaliseret version skal du stadig beholde den ene kommentartabel (uden forældre-ID) og oprette en ReplyTo-tabel, som har et CommentID og et ResponseID, som begge er ID'erne for posterne i kommentartabellen.

Ved at bruge denne idé vil følgende sql vise kommentarerne og 'svaret' til hver kommentar for hvert svar, der har en kommentar:

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

Som Dimitrii påpeger, vil den ikke vise kommentarer uden svar - til dette har du brug for en ekstern joinforespørgsel (testede ikke syntaks):

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. Alle nyttige 11g Dynamic Performance Views

  2. SQL VÆLG SUM

  3. Topfunktioner at se efter i et SQL Server-overvågningsværktøj

  4. django auth Bruger afkorter e-mail-felt