none
两个表多个连接如何查询? RRS feed

  • 问题

  • 例1:

    系统视图:sys.serever_role_member, sys.sever_principals

    需要列出member_name所拥有的 role_name这个如何查询?

    例2:

    一个品牌,其有10个型号的产品在许多商店中销售,产品在商店中的销售状况分为4个等级。为此建了两个表:

    销售终端表(记录10个产品在终端的销售状况,用等级编号记录):

          Store  (StoreID,StoreName, P1levelID,P2levelID,... P10level_ID)

    等级表:

           Level  (Level_ID,Level_Name)

    现在要生成一个查询,输出    StoreName,P1levelName,P2levelName,...P10levelName

    如何弄?

    另外例2中的表的设计是否科学?

    2013年3月29日 14:52

答案

  • Table Store is not in first normal form.
    2013年3月29日 14:59
  • select sp.name,sp1.name from sys.server_role_members as srm
    join  sys.server_principals as sp
    on srm.member_principal_id = sp.principal_id  join sys.server_principals as sp1 on srm.role_principal_id =sp1.principal_id

    原来用AS把表设为另一个变量就可以了。

    AS 是定义一个别名, 可以在列的前面指定这个别名, 表示这个字段来源

    你也可以不用 AS 指定别名, 直接在字段名前面放表的名字也是一样的

    2013年3月30日 1:12
  • LZ说得很对,多表连接的时候为表指定别名来选取相应表的字段出来

    select sp.name AS '登录名',sp1.name AS '角色/权限' from sys.server_role_members as srm 
    join  sys.server_principals as sp
    on srm.member_principal_id = sp.principal_id  join sys.server_principals as sp1 on srm.role_principal_id =sp1.principal_id


    给我写信: QQ我:点击这里给我发消息

    2013年4月4日 1:57

全部回复

  • Table Store is not in first normal form.
    2013年3月29日 14:59
  • select sp.name,sp1.name from sys.server_role_members as srm
    join  sys.server_principals as sp
    on srm.member_principal_id = sp.principal_id  join sys.server_principals as sp1 on srm.role_principal_id =sp1.principal_id

    原来用AS把表设为另一个变量就可以了。

    2013年3月30日 0:46
  • select sp.name,sp1.name from sys.server_role_members as srm
    join  sys.server_principals as sp
    on srm.member_principal_id = sp.principal_id  join sys.server_principals as sp1 on srm.role_principal_id =sp1.principal_id

    原来用AS把表设为另一个变量就可以了。

    AS 是定义一个别名, 可以在列的前面指定这个别名, 表示这个字段来源

    你也可以不用 AS 指定别名, 直接在字段名前面放表的名字也是一样的

    2013年3月30日 1:12
  • 不用别名的话,select怎么知道是取哪个 name啊?这种情况应该必须配不同的别名才成吧。
    2013年3月30日 1:58
  • LZ说得很对,多表连接的时候为表指定别名来选取相应表的字段出来

    select sp.name AS '登录名',sp1.name AS '角色/权限' from sys.server_role_members as srm 
    join  sys.server_principals as sp
    on srm.member_principal_id = sp.principal_id  join sys.server_principals as sp1 on srm.role_principal_id =sp1.principal_id


    给我写信: QQ我:点击这里给我发消息

    2013年4月4日 1:57