当前位置: 代码迷 >> Sql Server >> 新手提问,高手帮助!
  详细解决方案

新手提问,高手帮助!

热度:84   发布时间:2016-04-24 09:02:09.0
新手提问,在线等高手帮助!!!
    在SQL SERVER中,我建立了一个表,这个表的主键是ID,我计划在这个表中添加一个列,叫Friends,保存我的所有的好友的信息,要实现这个,是不是要新建立一个Friend表,与之前的ID关联,然后我每插入一条新的纪录,就生成一个相关的表来保存我的Friends数据? 
    初学编程,刚好要用到这样的知识,暂时不求深解,等基础学完再回头看书,现在只希望有高人指点一下怎么操作,能够用就行。最好是写明白实现步骤,例如:
    第一步,建立一个User表,其中主键为ID;
    第二步,建立一个Friend表;
    第三步,建立User与Friend之间的关系;(关键是这个地方怎么弄?) 

    然后是几个问题:
    一、这种关系建立后,是不是意味着我每在User中插入一条记录,就自动生成一个表?
    二、我怎么访问这个表中的数据?SQL语句是怎样的(查询、插入、删除、更新)?

欢迎贴链接、转帖、复制,感激不尽! 
------解决思路----------------------

-- create 
create table Friend(fid int,userid int,name varchar(100));
需要维护Friend 这张表信息
-- 关联user表查询,好友信息
select * from User u,Friend f where u.id = f.userid
-- insert 
插入时,需要获取user 表的id
-- delete
delete from Friend where userid in('xxx','xxx',...)


------解决思路----------------------
friend其实也可能是user的吧?
那就是只需要user一个表,你说的friend也都放入user表中,然后要个n-n的关系表,表格至少有3列,ID, ID_User1, ID_User2,
后两列就是user表中2个人的对应关系。
------解决思路----------------------

create table users(userid int identity primary key, name varchar(10))
go
create table friend(userid int , fid int)
go
alter table friend 
add constraint fk_friend_userid foreign key (userid) references users(userid)
go
alter table friend 
add constraint fk_friend_fid foreign key (fid) references users(userid)
go
insert into users(name) values
('张三'),('李四'),('王五'),('马六')
go
select * from users 
go
insert into friend(userid,fid) values
(1,2),(1,3),(1,4),(2,1),(2,3),(2,4),(3,4),(4,3)
go
select a.name [用户名] ,b.name [他的好友]
from friend f
inner join users a on f.userid = a.userid
inner join users b on f.fid = b.userid
go
drop table friend 
go
drop table users 
go


(4 行受影响)
userid      name
----------- ----------
1           张三
2           李四
3           王五
4           马六

(4 行受影响)


(8 行受影响)
用户名        他的好友
---------- ----------
张三         李四
张三         王五
张三         马六
李四         张三
李四         王五
李四         马六
王五         马六
马六         王五

(8 行受影响)


  相关解决方案