我有一张名为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
。这有三列。 id
,user_id
,follow_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.
我无法弄清楚如何使这个过滤器工作。
答案 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;