首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查找六次Kevin Bacon数的sql查询/过程

查找六次Kevin Bacon数的sql查询/过程
EN

Stack Overflow用户
提问于 2012-04-12 05:15:30
回答 1查看 1.5K关注 0票数 0

我正试图在SQL Server中设计一个完全由查询/过程驱动的"Kevin Bacon number finder“,但我甚至不知道从哪里开始。如果有人能给我一些帮助,或者给我一些类似的东西,我将不胜感激,因为我已经搜索过了,但找不到与我需要的东西相似的东西,而不是依赖于使用面向对象编程。

“凯文·培根数字”指的是“凯文·培根的六度”,演员可以在六步之内通过他或她的电影角色与演员凯文·培根联系起来。然而,我需要找到过程中的步骤数,即使超过6个步骤。

Six_Degrees_of_Kevin_Bacon

我必须使用的模式是:

代码语言:javascript
复制
ACTOR (id, fname, lname, gender)
MOVIE (id, name, year, rank)
DIRECTORS (id, fname, lname)
CASTS (pid, mid, role)
MOVIE_DIRECTORS (did, mid)
GENRE (genre, mid)

CASTS.pid指的是ACTOR.id,CASTS.mid指的是MOVIE.id。

EN

回答 1

Stack Overflow用户

发布于 2012-04-12 05:32:22

您是否可以扩展演员和导演的模式,为其Kevin Bacon编号添加一个kbnumber字段?然后,您可以很容易地创建一个存储过程,如下所示

代码语言:javascript
复制
update a 
set a.kbnumber = EXPR(a2.kbnumber + 1) 
from top 1 actor a inner join
movie m on a.mid = m.id inner join
actor a2 on a2.mid = m.id
order by a2.kbnumber ASC
where a.kbnumber is null or a.kbnumber > a2.kbnumber + 1

update a
set a.kbnumber = EXPR(a2.kbnumber + 1) 
from top 1 actor a inner join
movie m on a.mid = m.id inner join
directors a2 on a2.mid = m.id
order by a2.kbnumber ASC
where a.kbnumber is null or a.kbnumber > a2.kbnumber + 1

update a 
set a.kbnumber = EXPR(a2.kbnumber + 1) 
from top 1 directors a inner join
movie m on a.mid = m.id inner join
actor a2 on a2.mid = m.id
order by a2.kbnumber ASC
where a.kbnumber is null or a.kbnumber > a2.kbnumber + 1

update a
set a.kbnumber = EXPR(a2.kbnumber + 1) 
from top 1 directors a inner join
movie m on a.mid = m.id inner join
directors a2 on a2.mid = m.id
order by a2.kbnumber ASC
where a.kbnumber is null or a.kbnumber > a2.kbnumber + 1

运行此过程,直到不再更新kbnumber。任何剩余的空值都不能追溯到凯文·培根

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10114106

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档