Php 访问表中的社会模式

Php 访问表中的社会模式,php,sql,social-networking,Php,Sql,Social Networking,我有一个(我的)sql表,其中包含有关健身房访问的以下数据: gym_visits ( id INT customer_id INT checkin_time DATETIME ) 每位顾客都有一张个人卡,他们用这张卡登记去健身房。我想知道是否有人在多个场合一起去健身房(一起去健身房的朋友),并创建一个社交图。 我认为一个很好的标准是,如果他们在多个(比如说3个)场合相互之间最多5分钟的时间进行登记 最简单的方法是使用php循环遍历所有记录,并在该时间范围内查找所有其他记录,然后创

我有一个(我的)sql表,其中包含有关健身房访问的以下数据:

gym_visits (
  id INT
  customer_id INT
  checkin_time DATETIME
)
每位顾客都有一张个人卡,他们用这张卡登记去健身房。我想知道是否有人在多个场合一起去健身房(一起去健身房的朋友),并创建一个社交图。 我认为一个很好的标准是,如果他们在多个(比如说3个)场合相互之间最多5分钟的时间进行登记


最简单的方法是使用php循环遍历所有记录,并在该时间范围内查找所有其他记录,然后创建一个邻接矩阵,但这需要大量的计算能力和时间。应该有更好的计算方法,但我想不出任何方法。您知道吗?

要了解客户是否一天访问一次以上,您可以:

SELECT customer_id, count(*) as numberOfVisits
FROM gym_visits
WHERE checkin_time = <some date value>
GROUP BY customer_id
  • 使用上述结构创建另一个表:

  • 在表格上创建插入触发器。当新客户在time NOW()到达时,触发器将在gym_Visites表中找到在NOW()到X分钟之间到达的所有客户(X是您选择的任何间隔/滚动时间窗口)。然后,此触发器将在该时间间隔内找到的所有客户(即可能的朋友)的行插入该新客户的朋友表中。通过这种方式,您可以轻松捕获可能的友谊,并且该表包含所有详细信息,允许您生成可能友谊的社交图


  • 上面的表结构不会生成社交图,因为它没有定义客户之间的关系。但是可以从该表中找出客户在特定时间间隔内进行了多少次访问,因为该表没有明确定义客户之间的关系,但因为我们知道每个客户的入住时间,所以在一定的小时间跨度内,每次有两个人同时访问时,发生关系的概率更高。我认为用这些数据创建一个图表是可能的。
    CREATE TABLE friends
    (
        customer_id int,
        friend_id int
        // add other columns as you see fit
    )