如何 select 仅来自朋友和查看用户的帖子
How to select ONLY posts from friends and viewing user
我正在为我的网站制作一个社交插件,我有一个朋友 table 保存所有已接受的朋友请求,我需要显示来自用户朋友的所有 post 和用户 posts 按日期顺序排列,所以我试过这个 sql 查询:
SELECT DISTINCT `social_posts`.*, `social_friends`.*, `users`.*
FROM `social_posts`
JOIN `social_friends`
ON `fUID` = '1' AND `friend` = `pUID` OR `pUID` = '1'
JOIN `users`
ON `friend` = `uid`
ORDER BY `date` DESC
结构
CREATE TABLE `social_friends` (
`fID` int(11) NOT NULL AUTO_INCREMENT,
`fUID` int(11) NOT NULL,
`friend` int(11) NOT NULL,
PRIMARY KEY (`fID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE `social_posts` (
`pid` int(11) NOT NULL AUTO_INCREMENT,
`pUID` int(11) NOT NULL,
`body` text NOT NULL,
`date` datetime NOT NULL,
PRIMARY KEY (`pid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
fUID为users(浏览)用户ID,friend为用户好友,pUID为制作post用户的用户ID。
但这显示了每个 post 中的两个,即使 SELECT DISTINCT
,我也不知道如何解决这个问题。
1 - 你能提供更多表格信息(字段)吗?
什么是 gUID 和 pUID
2 - 尝试改变
ON `fUID` = '1' AND `friend` = `pUID` OR `pUID` = '1'
到 ON friend = pUID
并把 fUID = 1 OR pUID = 1
放在 WHERE
子句中
我正在为我的网站制作一个社交插件,我有一个朋友 table 保存所有已接受的朋友请求,我需要显示来自用户朋友的所有 post 和用户 posts 按日期顺序排列,所以我试过这个 sql 查询:
SELECT DISTINCT `social_posts`.*, `social_friends`.*, `users`.*
FROM `social_posts`
JOIN `social_friends`
ON `fUID` = '1' AND `friend` = `pUID` OR `pUID` = '1'
JOIN `users`
ON `friend` = `uid`
ORDER BY `date` DESC
结构
CREATE TABLE `social_friends` (
`fID` int(11) NOT NULL AUTO_INCREMENT,
`fUID` int(11) NOT NULL,
`friend` int(11) NOT NULL,
PRIMARY KEY (`fID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE `social_posts` (
`pid` int(11) NOT NULL AUTO_INCREMENT,
`pUID` int(11) NOT NULL,
`body` text NOT NULL,
`date` datetime NOT NULL,
PRIMARY KEY (`pid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
fUID为users(浏览)用户ID,friend为用户好友,pUID为制作post用户的用户ID。
但这显示了每个 post 中的两个,即使 SELECT DISTINCT
,我也不知道如何解决这个问题。
1 - 你能提供更多表格信息(字段)吗? 什么是 gUID 和 pUID
2 - 尝试改变
ON `fUID` = '1' AND `friend` = `pUID` OR `pUID` = '1'
到 ON friend = pUID
并把 fUID = 1 OR pUID = 1
放在 WHERE
子句中