Php 从我自己和“朋友”的帖子中获取结果
我有一个我自己都搞不懂的问题。我尝试过使用左连接等,但似乎没有任何效果。我正在使用MySQL,所以你知道 我正在为我和我的朋友建立一个小型博客门户,所有用户都有自己的博客 数据库: 用户: 身份证件 用户名, 暗语 等 博客: 身份证件 标题 文本 用户id, 等 关系 追随者id, 以下是您的id 我查询我自己的博客帖子,如下所示:Php 从我自己和“朋友”的帖子中获取结果,php,mysql,join,Php,Mysql,Join,我有一个我自己都搞不懂的问题。我尝试过使用左连接等,但似乎没有任何效果。我正在使用MySQL,所以你知道 我正在为我和我的朋友建立一个小型博客门户,所有用户都有自己的博客 数据库: 用户: 身份证件 用户名, 暗语 等 博客: 身份证件 标题 文本 用户id, 等 关系 追随者id, 以下是您的id 我查询我自己的博客帖子,如下所示: SELECT * FROM microblog WHERE user_id = {$user_id} ORDER BY posted DESC SELECT *
SELECT * FROM microblog WHERE user_id = {$user_id} ORDER BY posted DESC
SELECT * FROM users, relations WHERE relations.follower_id = {$user_id} AND relations.following_id = users.id
我的朋友名单如下:
SELECT * FROM microblog WHERE user_id = {$user_id} ORDER BY posted DESC
SELECT * FROM users, relations WHERE relations.follower_id = {$user_id} AND relations.following_id = users.id
这是最简单的部分。但是
我宁愿以某种方式加入表格,因为我还想在我的循环中列出我的朋友的博客帖子。但我不只是想让帖子显示出来,我还想知道发布该帖子的用户的一些信息,所以我也必须从users表中获取一些信息。这就是困扰我的!我想不出来
简而言之:我想在我自己的循环中列出我自己的博客帖子和我的朋友。我还想在帖子旁边显示用户名和电子邮件
希望你明白我的意思
/托拜厄斯
瑞典试试这个
SELECT m.*
FROM microblog m
INNER JOIN users u ON m.user_id = u.user_id
LEFT JOIN relations r ON r.following_id = m.user_id
WHERE m.user_id = {$user_id}
OR (r.follower_id = {$user_id} AND NOT IsNull(r.follower_id))
ORDER BY posted DESC
怎么样
select
u.username,
u.email,
m.title,
m.text
-- ... etc
from microblog m
inner join user u on m.user_id = u.id
where m.user_id = {$user_id}
or m.user_id in (select
following_id
from relations r
where follower_id = {$user_id}
);
从我的角度来看,我会分别提取用户数据,将它们存储到一个数组中,并在需要时访问它们。这对性能来说应该更好,而且肯定会更简单
select * from blog b, relations r
where b.user = $user_id or ( b.user = r.follower_id and r.following_id = $user_id )
order by posted desc;
不确定我是否反转了关注者/关注者。这有助于我列出自己的帖子和朋友,但我也想列出是谁写的。所以我需要从users表中获取username,当我改变它时,它工作得很有魅力:where following_id={$user_id}到where follower_id={$user_id}现在它工作了,并且在phpmyadmin中显示了所有内容,但是当我尝试回显它时,只有microblog表中的数据工作。例如,如果我使用echo$mblog->username;在foreach循环中,它不起作用,我在…….中得到:Undefined属性:mBlog::$username。。。。。。。但它应该在那里?@Tobias:哦,是的,我是说在那里…:你是说$mblog->title可以工作,但是$mblog->username失败了吗?你能在那里发布你正在使用的代码吗?我正在使用两个类,一个用于用户,一个用于微博,所以我相信我需要以某种方式将用户名传递到我的微博类中。我试着用“无oop”的方式回应它,然后它像一个符咒一样工作。嗯。。。这取决于类的结构。我不知道你是怎么构造你的物体的。。。但有一个想法可能是:忽略初始查询中的用户表,在mBlog类中有一个bloguser成员,该成员返回新用户$this->user\u id。然后您可以调用$mBlog->bloguser->username。请注意,这会导致选择N+1方案,这可能会对您的性能产生重大的负面影响。出于这个原因,我通常在可能的情况下选择非面向对象方法来解决此类问题。