基于的友谊表中的SQL插入值

时间:2013-02-06 15:57:18

标签: sql

我正在修一个数据库课程而且我遇到了其中一个问题。 “对于所有情况,其中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

我想知道是否有人可以给我一些关于如何继续的提示。 感谢。

4 个答案:

答案 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