sql >> Database >  >> RDS >> Mysql

mysql/php:laat berichten zien en voor elk bericht alle opmerkingen

Als u uw databasestructuur niet kent, zou het er ongeveer zo uit moeten zien. Merk op dat u de * . moet vervangen karakters met meer expliciete lijsten met kolommen die je echt nodig hebt.

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

Merk op dat als je alleen tellingen, sommen en dergelijke probeert te krijgen, het een goed idee is om een ​​deel van die informatie in de cache op te slaan. U wilt bijvoorbeeld het aantal opmerkingen in de tabel met berichten in de cache opslaan in plaats van ze bij elke zoekopdracht te tellen. Tel en update het aantal reacties alleen bij het toevoegen/verwijderen van een reactie.

BEWERKEN: Ik realiseerde me dat je ook gebruikersgegevens aan elke opmerking wilde toevoegen. Je kunt meer dan eens AAN dezelfde tafel deelnemen, maar het wordt lelijk. Dit kan een hele dure zoekopdracht worden. Ik voeg ook een voorbeeld toe van hoe kolommen een alias te geven, zodat het minder verwarrend is:

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. Db::Instance prestashop

  2. Wat zijn benoemde pijpen?

  3. SQL Server / Oracle:tijdelijke privétabellen

  4. Hoe postgresql op mijn Mac te verwijderen (met Snow Leopard)