根据与User关联的项目获取数据列表

时间:2013-04-24 20:41:02

标签: mysql sql

我有一张名为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;

我想做的是略微改变它以使用户更加风度翩翩。

我有另一个用户“连接”表。有点像Twitter。当用户关注某人时,会在此表中记录为profile_follow。这有三列。 iduser_idfollow_id。简单地说:如果我是用户#1,并且我“跟随”用户#3和用户#5,则此表中将添加两行:

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

以下是我想要更改上述查询的方法。我想只显示最新评论,来自您关注的人

所以我需要至少再一次加入表profile_follow。我需要传入一个user_id(它是一个php函数),执行类似`WHERE profile_follow.user_id ='{$ user_id}'的操作。我想我必须在此添加一个子查询,而不是使用。

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

我想我需要做一些事情:

Select follow_id where user_id = (logged in user)

然后在主查询中:

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

我无法弄清楚如何使这个过滤器工作。

1 个答案:

答案 0 :(得分: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;