sql >> Databasteknik >  >> RDS >> Mysql

mysql/php:visa inlägg och för varje inlägg alla kommentarer

Om du inte känner till din databasstruktur borde den se ut ungefär så här. Observera att du bör ersätta * tecken med mer explicita listor över kolumner du faktiskt behöver.

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

Observera att om du bara försöker få räkningar, summor och liknande så är det en bra idé att cache en del av den informationen. Du kanske till exempel vill cachelagra antalet kommentarer i posttabellen istället för att räkna dem varje fråga. Räkna och uppdatera bara antalet kommentarer när du lägger till/tar bort en kommentar.

EDIT: Insåg att du också ville bifoga användardata till varje kommentar. Du kan GÅ MED i samma bord mer än en gång men det blir fult. Detta kan bli en riktigt dyr fråga. Jag inkluderar också ett exempel på hur man alias kolumner så det är mindre förvirrande:

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. Återställ raderade poster i PostgreSQL

  2. SQLSTATE[HY000] [1045] undantag vid anslutning till databasen med 000webhost

  3. Vad är ett bra sätt att denormalisera en mysql-databas?

  4. Varför är SQLAlchemy count() mycket långsammare än den råa frågan?