我正在修一个数据库课程而且我遇到了其中一个问题。 “对于所有情况,其中A是B的朋友,而B是C的朋友,为A和C对添加新的友谊”。 就我而言
INSERT INTO
friend
SELECT DISTINCT
f1.ID1, f2.ID1
FROM
friend f1
JOIN friend f2 using (ID2),
friend
WHERE
f1.ID1 <> f2.ID1
AND friend.ID1 <> f1.ID1
AND friend.ID2 <> f1.ID2
架构在这里http://www.sqlfiddle.com/#!5/cf8b5/23
我想知道是否有人可以给我一些关于如何继续的提示。 感谢。
答案 0 :(得分:2)
我认为你有基本的概念。
我会这样做:
INSERT INTO friend
(ID1, ID2)
SELECT DISTINCT f1.ID1, f2.ID2
FROM friend f1
INNER JOIN f2
ON f1.ID2 = f2.ID1
AND f1.ID1 <> f2.ID1
AND f1.ID2 <> f2.ID2
WHERE f1.ID1 <> f2.ID2
答案 1 :(得分:1)
我认为可能是:
INSERT INTO friend
(ID1, ID2)
SELECT DISTINCT h.ID, f2.ID2
FROM Highschooler h
inner join friend f1 on(h.ID=f1.ID1)
inner join friend f2 on(f1.ID2=f2.ID1)
where h.ID <> f2.ID2
and not exists(select *
from friend f3
where f3.ID1=h.ID
and f3.ID2 = f2.ID2)
答案 2 :(得分:0)
首先,我没有看到同时拥有FRIEND和LIKES表格。
如果友谊是由两个相互喜欢的高中生代表而不是一个有两个ID列的表就足够了。
答案 3 :(得分:0)
insert into friend
select f1.id1, f2.id2
from friend f1 join friend f2 on f1.id2 = f2.id1
where f1.id1 <> f2.id2
except
select * from friend