我在 oracle9i 的数据库中有这张表:
CREATE TABLE involved_in
(
rid number,
aid number NOT NULL,
fid number NOT NULL,
role varchar(80),
note varchar(80),
job varchar(35),
PRIMARY KEY(rid),
FOREIGN KEY(fid) REFERENCES production(pr_id),
FOREIGN KEY(aid) REFERENCES person(pid)
);
其中包含有关在电影 (fid) 中工作的演员 (aid) 的数据。
我想做的类似于计算 培根数
除了我的凯文培根以拥有 517635 的援助而闻名。
我不知道如何计算(仅使用 SQL 语句)我必须连接给定参与者(通过其他帮助)以找到与 517635 的连接的参与者数量。
查询的结果可能是给定演员必须连接到我的人的所有演员的列表,或者只是一个数字。
为此,我认为我必须首先获得与 517635 合作过的所有演员,而那些直接与他合作过的演员会得到 1。这张桌子不是太大,但足够大,可以让它变得不可行。
例如,假设布拉德皮特是我的 517635。他与安吉丽娜朱莉在《史密斯夫妇》中合作,这将使她成为第一名。如果布拉德皮特从未与布鲁斯威利斯合作过任何电影(假设是这样),但安吉丽娜朱莉与他合二为一,那么布鲁斯威利斯相对于布拉德皮特的人数将是 2。
在我的查询中,如果给定的数字是安吉丽娜的,结果将是:“布拉德皮特 1”或只是“1” 如果给定的数字是威利斯,结果将是:“安吉丽娜朱莉布拉德皮特 2”或“2”在表中:
INSERT INTO involved_in(rid, aid, fid, role, note, job) VALUES(1, 33, 1584953, 'Himself', 'NULL', 'actor');
INSERT INTO involved_in(rid, aid, fid, role, note, job) VALUES(2, 1135, 1999660, 'Himself', 'NULL', 'actor');
INSERT INTO involved_in(rid, aid, fid, role, note, job) VALUES(3, 1135, 2465724, 'Himself', 'NULL', 'actor');
INSERT INTO involved_in(rid, aid, fid, role, note, job) VALUES(4, 6003, 2387806, 'Himself', '(archive footage)', 'actor');
INSERT INTO involved_in(rid, aid, fid, role, note, job) VALUES(5, 13011, 1935123, 'Himself', 'NULL', 'actor');
我什么都没有,我对 SQL 完全陌生,我能想到的所有东西都会导致无限循环,其中有一个变量来计算循环数。关于从哪里开始以及幸运地结束的任何想法?