我有两个名为'events'和'topics'的表,每个表可以有很多注释。PHP&Mysql - 两个表之间的左外连接
我需要做的是列出所有事件和主题与每行的评论量。我设法返回所有主题,这很好,但我不知道如何将事件表添加到MySql。下面列出了评论和事件表字段。任何人都可以用这个查询来帮我吗?
活动:
- ID
- EVENT_NAME
评论:
- POST_ID < - 对于任何一个事件或主题表
表中的相关型号ID < - 该行属于这样无论是主题或事件
SELECT t.id, t.title, c.created_at, IF(ISNULL(c.allComments), 0, c.allComments) AS totalComments FROM topics AS t LEFT OUTER JOIN ( SELECT created_at, post_id, COUNT(*) AS allComments FROM comments GROUP BY post_id ) AS c ON c.post_id = t.id ORDER BY tc.created_at DESC, c.allComments DESC
这是一个[多态协会(http://stackoverflow.com/tags/polymorphic-associations的例子/ hot),这被认为是SQL反模式(参见[Bill Karwin的书:SQL Antipatterns](http://www.pragprog.com/titles/bksqla/sql-antipatterns)以获得更多信息),我建议重新设计表格模式... – ircmaxell 2010-11-24 15:11:36