Mysql
 sql >> база данни >  >> RDS >> Mysql

Дизайн на база данни за коментари и отговори

Можете да използвате само една таблица, която включва поле ParentID. Ако записът няма стойност, това е коментар, в противен случай е отговор (на коментар или отговор).

Можете да направите заявка към записа ParentID на записа (проверете той е ParentID), за да видите дали този отговор е на коментар или отговор.

Редактиране :Горното е доста практично решение. Въпреки това, за да преминете към нормализирана версия, все пак запазете една таблица с коментари (без ParentID) и създайте таблица ReplyTo, която има CommentID и ResponseID, като и двете са идентификаторите на записите в таблицата Comments.

Използвайки тази идея, следният 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

Както посочва Димитрий, той няма да показва коментари без отговори - за това се нуждаете от външна заявка за присъединяване (не тества синтаксис):

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Изтриване на дубликати от голяма таблица

  2. Какво означава Таблица не поддържа оптимизиране, вместо това да правиш повторно създаване + анализ?

  3. Вземете последния ред с group by и Laravel

  4. Как да импортирате Excel файл в mysql база данни от PHP

  5. Използване на SUM върху FLOAT данни