语言表:
  语言ID,说明,...
注册表:
  用户ID,语言ID,...

解决方案 »

  1.   

    马可的方案还要改一下(因为语言让用户选择(多选)):语言表:
      语言ID,说明,其他...注册表:
      用户ID,用户名,其他...用户语言表
      用户ID,语言ID
      

  2.   

    create table a(
    id int not null references dbo.a(Id)
    Var nvarchar(40)
    )gocreate table b(
    id int identity(1,1) not null  primary key,
    Var nvarchar(40)
    go
    insert b
    values('英文')
    ...........
      

  3.   

    而得到用户的信息,可以用查询:select a.*,b.说明,其他
    from 用户语言表 m
      join 注册表 a on a.用户ID=m.用户ID
      join 语言表 b on a.语言ID=m.语言ID
      

  4.   

    如果要得到的用户信息中,每个用户只显示一条,语言部分显示为:
    英文,日文
    的形式.可以用一个自定义函数来解决:create function f_getstr(@用户id int)
    returns varchar(8000)
    as
    begin
    declare @re varchar(8000)
    set @re=''
    select @re=@re+','+说明 from 语言表 a join 用户语言表 b on a.语言ID=b.语言ID
    where 用户ID=@用户ID
    set @re=substring(@re,2,8000)
    return(@re)
    end
    go
      

  5.   

    调用得到结果:
    select *,语言=dbo.f_getstr(用户ID) from 注册表
      

  6.   

    语言表:
      语言ID,说明
           1     中文
           2     英文
           3     日文用户语言表
      用户ID,语言ID
          001     1
          001     2
          002     2
          003     1
          003     2
          003     3是这样吗?
    但用户ID是主键时不就……?还想请教
      

  7.   

    我原来的想法是:
    语言表:
      语言ID,说明
           1     中文
           2     英文
           3     日文用户语言表
      用户ID,语言ID
          001     1,2
          002     2
          003     1,2,3
    就是将用户选择的连接成一个字符串,然后才一次插入的