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

mysql/php:показва публикации и за всяка публикация всички коментари

Без да знаете структурата на вашата база данни, тя трябва да изглежда по следния начин. Имайте предвид, че трябва да замените * знаци с по-ясни списъци с колони, от които действително се нуждаете.

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

Имайте предвид, че ако просто се опитвате да получите бройки, суми и подобни неща, добра идея е да кеширате част от тази информация. Например, може да искате да кеширате броя на коментарите в таблицата с публикации, вместо да ги броите при всяка заявка. Преброяване и актуализиране на броя на коментарите само при добавяне/премахване на коментар.

РЕДАКТИРАНЕ: Разбрах, че също така искате да прикачите потребителски данни към всеки коментар. Можете да се ПРИСЪЕДИНЕТЕ към една и съща маса повече от веднъж, но става грозно. Това може да се превърне в наистина скъпо запитване. Включвам и пример за това как да правите псевдоними на колони, така че да е по-малко объркващо:

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. Какъв е най-добрият начин да изберете първите два записа от всяка група чрез команда SELECT?

  2. Как да намерите по множество критерии с Phalcon findFirst?

  3. Трябва ли да включим колона за сортиране, първичен ключ в съставния индекс (MySQL)

  4. Извличане на данни от MySQL база данни в html падащ списък

  5. Изпълнение на подзаявка в клауза IN с големи таблици в заявка за изтриване