【问题标题】:How to select ONLY posts from friends and viewing user如何仅选择来自朋友和查看用户的帖子
【发布时间】:2015-01-25 01:26:11
【问题描述】:

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

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

【问题讨论】:

    标签: php mysql sql logic


    【解决方案1】:

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

    2 - 尝试改变

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

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

    【讨论】:

    • 我更深入地解释了列名,当有 JOIN 子句时,我应该在哪里放置 WHERE 子句
    • SELECT DISTINCT social_posts.*, social_friends.*, users.* FROM social_posts JOIN social_friends ON friend = pUID JOIN @9876543332@ ON @9876543332@ ON @ = uid WHERE fUID = '1' 或 pUID = '1' ORDER BY date DESC
    猜你喜欢
    • 1970-01-01
    • 2019-01-12
    • 1970-01-01
    • 2013-11-21
    • 1970-01-01
    • 2016-12-13
    • 2020-12-28
    • 2017-12-16
    • 2018-08-16
    相关资源
    最近更新 更多