读书人

人们网面试题 - 潜在好友挖掘

发布时间: 2012-10-10 13:58:11 作者: rapoo

人人网面试题 -- 潜在好友挖掘
查找一个用户的潜在好友 即A的好友BCDEF皆有G而A却没有则把G推荐给A
用数据库实现:

首先要设计表
CREATE TABLE USER
(
ID INTEGER (PK),
.......
);

CREATE TABLE RELATIONSHIP
(
ID INTEGER (pk),
IDA INTEGER (fk),
IDB INTEGER (fk)
);

查询SQL语句:

            SELECT   b.IDB, COUNT(b.IDB)          FROM     RELATIONSHIP a, RELATIONSHIP b          WHERE    a.IDB = b.IDA          AND      b.IDB NOT IN                    (SELECT c.IDB                     FROM   RELATIONSHIP c                     WHERE c.IDA=a.IDA)  AND    b.IDB != a.IDA          AND      a.IDA = &1          GROUP BY b.IDB          HAVING   COUNT(b.IDB) > 3          ORDER BY COUNT(b.IDB) DESC


在实际情况中,把数据简单存储在单一数据库中几乎不太可能,可以建立类似<A,B> <B,C>...的键值对,存储在文件中,然后采用一个函数来处理,可以用到map

读书人网 >编程

热点推荐