Potresti usare solo una tabella, che include un campo ParentID. Se il record non ha valore, è un commento, altrimenti è una risposta (a un commento oa una risposta).
Puoi interrogare il record ParentID del record (controlla è ParentID) per vedere se questa risposta riguarda un commento o una risposta.
Modifica :Quanto sopra è una soluzione abbastanza pratica. Tuttavia, per utilizzare una versione normalizzata, mantieni ancora l'unica tabella Commenti (senza ParentID) e crea una tabella ReplyTo con un CommentID e un ResponseID, entrambi ID dei record nella tabella Commenti.
Usando questa idea, il seguente sql mostrerà i commenti e la "risposta" a ciascun commento per ogni risposta che ha un commento:
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
Come sottolinea Dimitrii, non visualizzerà commenti senza risposte - per questo è necessaria una query di join esterno (non è stata testata la sintassi):
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