我有这个查询,它完全符合我的要求。基本上,想想Twitter。你不希望你的主屏幕充满了任何人从最近开始的每一条推文。你只想要你的朋友。这就是它的作用。
profile_follows
是建立连接的表。 user_id
是你,follow_id
是你所关注的人的user_id
。
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
INNER JOIN users u
ON u.user_id = a.user_id
WHERE pf.user_id = '{$user_id}'
ORDER BY a.review_id DESC;
这是一个问题:我怎样才能达到完全相反的目的?它显示了每个人最近的活动除了你跟随的人之外?
我尝试了各种组合'ON pf.follow_id<> a.user_id',但这不起作用。还有其他想法吗?
总结一下,它应该选择所有a.user_id
,除非所有a.user_id
= follow_id
与{$ user_id}匹配(通过php
传入)。
答案 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 users u
ON u.user_id = a.user_id
WHERE NOT EXISTS(SELECT 1 FROM profile_follow WHERE user_id = '{$user_id}' AND follow_id = a.user_id)
ORDER BY a.review_id DESC;
答案 1 :(得分:0)
更改
WHERE pf.user_id = '{$user_id}'
到
WHERE pf.user_id != '{$user_id}'
或
WHERE NOT pf.user_id = '{$user_id}'
或
WHERE pf.user_id NOT IN ('{$user_id}')