1

我有这个查询正是我想要的。本质上,想想推特。您不希望您的主屏幕充满从最近开始的任何人的每条推文。你只想要你的朋友。这就是这样做的。

profile_follows是建立连接的表。 user_id是你,follow_iduser_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'的各种组合,但没有奏效。还有其他想法吗?

总而言之,它应该选择 all a.user_id,除非 all a.user_id=follow_id与 {$user_id) 匹配(通过 via php)。

4

2 回答 2

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;
于 2013-04-25T20:05:44.023 回答
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}')
于 2013-04-25T20:03:27.220 回答