0

我有一张桌子叫reviews. 我得到最新的用户评论是这样的:

SELECT b.item, b.item_id, a.review_id, a.review, c.category, u.username, c.cat_id 
FROM reviews a
INNER JOIN items b
     ON a.item_id = b.item_id
INNER JOIN master_cat c
     ON c.cat_id = b.cat_id
INNER JOIN users AS u
     ON u.user_id = a.user_id               
ORDER BY a.review_id DESC;

我想要做的是稍微改变它,使其对用户更人性化。

我有另一个用户“连接”表。有点像推特。当用户关注某人时,它会登录到名为profile_follow. 这有三列。 id, user_id, follow_id. 简单地说:如果我是用户 #1,并且我“关注”用户 #3 和用户 #5,则此表中将添加两行:

     profile_follow
------------------------
id | user_id | follow_id
   | 1       | 3
   | 1       | 5

这是我想要更改上面的查询的方式。我只想显示您关注的人的最新评论。

因此,对于 table ,我至少需要一个连接profile_follow。而且我需要传入一个 user_id(它是一个php函数),执行类似 `WHERE profile_follow.user_id = '{$user_id}' 之类的操作。我想我将不得不对此添加一个子查询,而不是使用。

有人可以告诉我如何完成这个查询吗?我不知道如何从这里处理它?到目前为止,我所有的尝试都失败了。

我想我需要做类似的事情:

Selectfollow_id 用户whereID= (logged in user)

然后在主查询中:

Select reviews only with profile_follow.follow_id = review.user_id.

我不知道如何使这个过滤器工作。

4

1 回答 1

1

没有测试总是很困难,但是:

SELECT b.item, b.item_id, a.review_id, a.review, c.category, u.username, c.cat_id 
FROM reviews a
INNER JOIN items b
     ON a.item_id = b.item_id
INNER JOIN master_cat c
     ON c.cat_id = b.cat_id
INNER JOIN profile_follow pf
     ON pf.follow_id = a.user_id
WHERE profile_follow.user_id = '{$user_id}'
ORDER BY a.review_id DESC;
于 2013-04-24T20:55:03.307 回答