sql >> Databasteknik >  >> RDS >> Mysql

Databasdesign för kommentarer och svar

Du kan bara använda en tabell, som innehåller ett ParentID-fält. Om posten inte har något värde är det en kommentar, annars är det ett svar (på antingen en kommentar eller ett svar).

Du kan fråga postens ParentID-post (inspektera den är ParentID) för att se om detta svar är på en kommentar eller ett svar.

Redigera :Ovanstående är en ganska praktisk lösning. Men för att gå med en normaliserad version, behåll fortfarande den ena kommentarstabellen (utan ParentID) och skapa en ReplyTo-tabell som har ett CommentID och ett ResponseID, som båda är ID:n för posterna i kommentarstabellen.

Med den här idén kommer följande sql att visa kommentarerna och "svaret" på varje kommentar för varje svar som 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åpekar kommer den inte att visa kommentarer utan svar - för detta behöver du en yttre kopplingsfråga (testade inte syntax):

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. Hur man ändrar standard nls_date_format för Oracle jdbc-klient

  2. Analysera ODBC-data i IBM SPSS

  3. Hur delar jag en sträng så att jag kan komma åt objekt x?

  4. Frågan var tom PHP-fel