求知

Allen_zdh 2010-01-15 08:59:32
A有两个一度好友(B、C)而B、C各有三个一度好友,求A有几个二度好友?
例如:
如果A有两个一度好友B、C
而B有三个一度好友C、E、F
C也有三个一度好友D、B、H
则EFDH是A的二度好友,要求用一个SQL语句查询出二度好友,这是一个面试题。
...全文
88 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
绿色夹克衫 2010-01-17
  • 打赏
  • 举报
回复
如果是几度之间互相有交叉的话,只能用图来做了,用树的话可能还存在一些问题!

[Quote=引用 3 楼 wiki14 的回复:]
正好我也想问问。

照如梦的语句来写,两级没问题,但是今天我碰到的是多级的。
不只有两级的。

可能要查出A的四度好友。

怎么弄?
[/Quote]
ouc_ajax 2010-01-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wiki14 的回复:]
正好我也想问问。

照如梦的语句来写,两级没问题,但是今天我碰到的是多级的。
不只有两级的。

可能要查出A的四度好友。

怎么弄?
[/Quote]


Oracle 的有个
select level, id , parentId
from
table start with parent is null
connect by prior id= parentId ;
不过只支持单级根节点。

Sql遇到的时候没有找到合适数据库实现方式。
最后还是写程序实现了。类似树节点排序。不过支持森林排序。

个人意见,出错勿怪!
绿色夹克衫 2010-01-17
  • 打赏
  • 举报
回复
上面的Sql似乎没有排除BC这两个A的1度好友和A自己!

如果四度的话,只能建树了,指数级的!
xray2005 2010-01-17
  • 打赏
  • 举报
回复
select * from table where Id in (select FirendId from table where id='A')
Allen_zdh 2010-01-17
  • 打赏
  • 举报
回复
人生 如 梦 谢谢了!
wiki14 2010-01-15
  • 打赏
  • 举报
回复
正好我也想问问。

照如梦的语句来写,两级没问题,但是今天我碰到的是多级的。
不只有两级的。

可能要查出A的四度好友。

怎么弄?
wuyq11 2010-01-15
  • 打赏
  • 举报
回复
select * from Tb where parentid in (select id from tb where parentid='A')
qqzeng-ip 2010-01-15
  • 打赏
  • 举报
回复
看不明白

111,120

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧