Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Projekt bazy danych komentarzy i odpowiedzi

Możesz użyć tylko jednej tabeli, która zawiera pole ParentID. Jeśli rekord nie ma wartości, jest to komentarz, w przeciwnym razie jest to odpowiedź (na komentarz lub odpowiedź).

Możesz zapytać o rekord ParentID rekordu (sprawdź to ParentID), aby sprawdzić, czy ta odpowiedź dotyczy komentarza, czy odpowiedzi.

Edytuj :Powyższe jest dość praktycznym rozwiązaniem. Jednak, aby przejść do wersji znormalizowanej, nadal zachowaj jedną tabelę Komentarze (bez identyfikatora nadrzędnego) i utwórz tabelę ReplyTo, która ma CommentID i ResponseID, które są identyfikatorami rekordów w tabeli Komentarze.

Korzystając z tego pomysłu, następujący sql pokaże komentarze i "odpowiedź" na każdy komentarz dla każdej odpowiedzi, która ma komentarz:

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

Jak wskazuje Dimitrii, nie wyświetla komentarzy bez odpowiedzi - do tego potrzebne jest zapytanie o złącze zewnętrzne (nie testowano składni):

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. Utwórz funkcję przechowywaną w MySQL z dynamiczną liczbą argumentów

  2. Klucz obcy Sequelize.js

  3. Jak zrobić drugie zapytanie mysql PDO w pętli while z innego zapytania?

  4. Dziwny wyjątek SQLException:nie znaleziono kolumny

  5. Utwórz diagram bazy danych w środowisku MySQL Workbench