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

查找一个用户的潜在好友 即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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值