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

mysql/php:pokaż posty i dla każdego posta wszystkie komentarze

Nie znając struktury Twojej bazy danych, powinna wyglądać mniej więcej tak. Pamiętaj, że powinieneś zastąpić * znaki z bardziej wyraźnymi listami kolumn, których faktycznie potrzebujesz.

SELECT p.*, c.*, u.* FROM posts p
LEFT JOIN comments c ON c.post_id = p.id
LEFT JOIN users u ON u.id = p.author_id

Pamiętaj, że jeśli próbujesz tylko uzyskać obliczenia, sumy i tym podobne, dobrym pomysłem jest buforowanie niektórych z tych informacji. Na przykład możesz chcieć buforować liczbę komentarzy w tabeli postów zamiast liczyć je przy każdym zapytaniu. Licz i aktualizuj liczbę komentarzy tylko podczas dodawania/usuwania komentarza.

EDYTUJ: Zdałem sobie sprawę, że chcesz również dołączyć dane użytkownika do każdego komentarza. Możesz DOŁĄCZYĆ do tego samego stołu więcej niż raz, ale robi się to brzydko. Może to zamienić się w naprawdę drogie zapytanie. Dołączam również przykład, jak aliasować kolumny, aby było mniej zagmatwane:

SELECT p.*, c.*, u.name as post_author, u2.name as comment_author FROM posts p
LEFT JOIN comments c ON c.post_id = p.id
LEFT JOIN users u ON u.id = p.author_id
LEFT JOIN users u2 ON u2.id = c.author_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. Jak pobrać wszystkie rekordy według klucza obcego za pomocą Laravel?

  2. Pytasz o rzeczy w pobliżu geolokalizacji?

  3. Laravel:Jak usunąć wiersze z wielu tabel o tym samym identyfikatorze za pomocą tylko jednego zapytania?

  4. Czy w wyzwalaczu MySQL można ustawić zmienną użytkownika za pomocą NEW.col i użyć jej w zapytaniu aktualizacyjnym?

  5. Jak concat_ws wiele pól i usunąć zduplikowane separatory dla pustych slotów?