【发布时间】:2012-02-03 02:42:34
【问题描述】:
我正在构建一个论坛软件,并试图通过特定的“个人资料”抓取所有帖子,抓取所有“喜欢”每个帖子的个人资料(“喜欢的人”),然后第三次获取喜欢每个帖子的每个个人资料的个人资料数据(profile_name 等)。
Table 1 - posts
---------------
post_id
profile_id (original poster)
content
...
Table 2 - like
--------------
profile_id
post_id
Table 3 - profiles
------------------
profile_id
profile_name
...
一些规则:
- 每个赞只是
post_id和profile_id的关系 - 个人资料不能多次点赞帖子
- 个人资料不能赞自己的帖子
如果使用 PHP 来获取数据,我被困在将所有类似的 profile_ids(“likers”)存储到数组中的步骤上。这是我目前所拥有的:
SELECT post.*, COUNT(`like`.profile_id) AS like_count
FROM post LEFT OUTER JOIN `like` ON post.post_id = `like`.post_id
WHERE post.profile_id = "'.$this->profile_id.'" GROUP BY post.post_id
提前致谢。如果我发现任何错误或向我指出任何错误,我会尝试更新。
【问题讨论】:
-
你看过这篇关于 JOIN 的文字吗:codinghorror.com/blog/2007/10/…? (虽然没有关于 GROUP BY)...
-
是的,但这对我没有多大好处。不是很深入。
-
好吧,我不知道您的数据库信息或所有内容的确切结果,但为什么不只是 INNER JOIN 所有表,并通过人员帖子和所有 cmets 过滤掉它们,减去可能对自己的帖子发表评论的人。或者只是获取所有帖子及其对应的 cmets 并通过 cmets 将它们分组在一起,或者对它们进行排序。
-
这不涉及对初始帖子的回复。我正在专门处理个人的个人资料页面,其中包含特定个人发布的所有帖子的列表、他们从每个帖子中收到的点赞数以及点赞的来源。
标签: php mysql join group-by relational