【问题标题】:Get mutual friends from Facebook friends (MySQL table)从 Facebook 好友中获取共同好友(MySQL 表)
【发布时间】:2012-11-22 20:28:39
【问题描述】:

我正在尝试让两个人成为共同的朋友。 我已将这些人的朋友保存在一个名为“朋友”的表格中,其中包含以下字段:

标识 | facebook_id |姓名 | uid |时间戳

  • id = 记录的唯一 ID
  • facebook_id = 朋友的 Facebook id
  • name = 朋友的名字
  • uid = 我网站上的用户 uid,它是保存在表格中的人的朋友
  • 时间戳=不需要解释:-)

希望有道理,已经尝试了各种方法来获得朋友,但没有运气

【问题讨论】:

    标签: php mysql facebook


    【解决方案1】:

    我不知道使用子查询是否会更快或 mySQL 已经对其进行了优化。 子查询解决方案:

      SELECT f1.id, f1.name 
      FROM (SELECT id, name FROM friends WHERE uid=1) f1 
      JOIN (SELECT id, name FROM friends WHERE uid=2) f2 
      ON f1.id=f2.id;
    

    【讨论】:

      【解决方案2】:

      如果 MySQL 有一个 INTERSECT 运算符就好了,但是...

      你可以抓住一个人的所有朋友:

      SELECT id, name
      FROM friends
      WHERE uid = 1
      

      然后您可以将这个列表加入到朋友表中,为其他用户寻找同一个朋友:

      SELECT f1.id, f1.name
      FROM friends f1
        JOIN friends f2 on f1.id = f2.id
      WHERE f1.uid = 1
      and f2.uid = 2
      

      这是伪代码,但应该很接近。

      【讨论】:

      • 我已经尝试过你的代码,但我收到“SQL 语法”错误。知道为什么吗?
      • 我想,我已经修改了代码,所以它应该可以工作,但它没有。你有正在使用的例子或类似的东西吗?
      • 请给我一点时间,让我侵入您的机器以获取您的新查询,因为您不想将其发布给我们来修复语法错误。
      • 对不起 ;-) 这里是代码$this->db->select("SELECT f1.id, f1.name FROM friends f1 JOIN friends f2 on f1.id = f2.id WHERE f1.uid = 3 and f2.uid = 4"); $query = $this->db->get();
      • 我在“users”表中有2个用户,在friends表中有ID 3和4
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多