如何仅从朋友中选择帖子并查看用户

时间:2015-01-25 01:26:12

标签: php mysql sql logic

我正在为我的网站制作一个社交插件,我有一个朋友表,其中包含所有已接受的朋友请求,我需要按照日期顺序显示来自用户朋友和用户帖子的所有帖子,所以我我试过这个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是用户(查看)用户ID,朋友是用户朋友,pUID是发布帖子的用户的用户ID。

但是这显示了每个帖子中的两个,即使是SELECT DISTINCT,我也不知道如何解决这个问题。

1 个答案:

答案 0 :(得分:1)

1 - 您能否提供表格的更多信息(字段)? 什么是fUID和pUID

2 - 尝试并更改

ON `fUID` = '1' AND `friend` = `pUID` OR `pUID` = '1'

ON friend = pUID并将fUID = 1 OR pUID = 1放入WHERE子句