create table [dbo].[member] (
  [ID] int identity(1,1) primary key not null,
  username varchar(20) null,
  sex char(2) null ,
  age tinyint null
)
gocreate table [dbo].[msg] (
  [ID] int identity(1,1) primary key not null,
  title varchar(50),
  Send_ID int REFERENCES [dbo].[member]([ID]), --发送者ID
  Re_ID  int REFERENCES [dbo].[member]([ID])   --接收者ID
)
go1.发送者ID和接收者ID和member.ID 正确的约束关系该怎么写?
2.查询:msg.ID, msg.title, Send_ID, 发送者username, Re_ID, 接收者username,...
这个查询怎么写,可以是视图、存储过程等...谢谢!!!

解决方案 »

  1.   

    1 Re_ID int constraint fk_reid foreign key references member(id)
    2 使用join
      

  2.   

    --楼主这个建外键是可行的,用外健约束
    select 
    *
    from 
    [dbo].[msg] a
    join
     [dbo].[member] b on b.ID=a.Send_ID
    join
     [dbo].[member] c on c.ID=a.Re_ID
      

  3.   

    select msg.id,msg.title,msg.send_id
          ,b.username,msg.re_id,c.username
    from msg ,number b,number c
     where msg.send_id=b.id and msg_re_id=c.id
      

  4.   

        Send_ID   int   REFERENCES   [dbo].[member]([ID]),   --发送者ID 
        Re_ID     int   REFERENCES   [dbo].[member]([ID])       --接收者ID 
    这样可以成功执行,用关系图里建关系的时候,无法同时建立关系,是什么原因???关系图是用来干什么的???
      

  5.   

    为了维护数据的完整性,要做到两个字段都和主表保持级联更新和删除,在不另外使用delete关键字查询语句的情况下,仅通过约束来实现,可不可以?可以的话约束怎么写?