A表:
ID      name             Parent_ID
1       消费结算              -1
2       会员管理              -1
3       会员充值              -1
4       订单列表              -1
5       系统统计              -1
6       系统管理              -1
7       操作记录              -1
8       管理员管理           6
9       商品管理               6
10    价格设置                6
11    会员规则设置        6
12    消费操作记录        7
13    会员操作记录        7B表:
ID         O_ID               A_ID
52       100018              3
53       100018              6
54       100018             10A表的ID和B表的A_ID关联想查询得到这样的结果
ID      name             Parent_ID          ID         O_ID               A_ID
1      消费结算               -1                NULL      NULL              NULL
2      会员管理               -1                NULL      NULL              NULL
3      会员充值               -1                   52        100018               3
4      订单列表               -1                NULL      NULL              NULL
5      系统统计               -1                NULL      NULL              NULL
6      系统管理               -1                   53        100018               6
7      操作记录               -1                NULL      NULL              NULL
8      管理员管理            6                NULL      NULL              NULL
9      商品管理                6                NULL      NULL              NULL
10   价格设置                 6                   54        100018             10
11   会员规则设置         6                NULL      NULL              NULL
12   消费操作记录         7                NULL      NULL              NULL
13   会员操作记录         7                NULL      NULL              NULL网上能找到很多,,但都不行,,,,,,,有没有一条SQL语句能实现........求大神教教....

解决方案 »

  1.   

    select * from A表
    left outer join B表 on A表.ID = B表.A_ID
      

  2.   

    B表的数据写漏了....还有其他数据想查询出O_ID为100018的数据
      

  3.   


    这个试过了.....B表中与A表没关联的记录都没有被显示出来没关联当然显示不出来。
    把需求描述清楚先我想得到这样的结果
    ID      name             Parent_ID          ID         O_ID               A_ID
    1      消费结算               -1                NULL      NULL              NULL
    2      会员管理               -1                NULL      NULL              NULL
    3      会员充值               -1                   52        100018               3
    4      订单列表               -1                NULL      NULL              NULL
    5      系统统计               -1                NULL      NULL              NULL
    6      系统管理               -1                   53        100018               6
    7      操作记录               -1                NULL      NULL              NULL
    8      管理员管理            6                NULL      NULL              NULL
    9      商品管理                6                NULL      NULL              NULL
    10   价格设置                 6                   54        100018             10
    11   会员规则设置         6                NULL      NULL              NULL
    12   消费操作记录         7                NULL      NULL              NULL
    13   会员操作记录         7                NULL      NULL              NULL把O_ID为100018的查询出来,,,与A表没关联的记录都显示NULL有没有这样的SQL语句???
      

  4.   


    这个试过了.....B表中与A表没关联的记录都没有被显示出来你是想显示B总全部数据吗?
    ;with a(ID,[name],Parent_ID) AS(
        SELECT 1,N'消费结算',-1 UNION ALL
        SELECT 2,N'会员管理',-1 UNION ALL
        SELECT 3,N'会员充值',-1 UNION ALL
        SELECT 4,N'订单列表',-1 UNION ALL
        SELECT 5,N'系统统计',-1 UNION ALL
        SELECT 6,N'系统管理',-1 UNION ALL
        SELECT 7,N'操作记录',-1 UNION ALL
        SELECT 8,N'管理员管理',6 UNION ALL
        SELECT 9,N'商品管理',6 UNION ALL
        SELECT 10,N'价格设置',6 UNION ALL
        SELECT 11,N'会员规则设置',6 UNION ALL
        SELECT 12,N'消费操作记录',7 UNION ALL
        SELECT 13,N'会员操作记录',7)
      ,b(ID,O_ID,A_ID) AS (
        SELECT 52,'100018',3 UNION ALL
        SELECT 53,'100018',6 UNION ALL
        SELECT 54,'100018',10 UNION ALL
        SELECT 55,'100018',100)
    SELECT b.*,a.* from a RIGHT JOIN  b on b.A_ID=a.ID
    WHERE b.O_ID='100018'
    /*
    ID          O_ID   A_ID        ID          name   Parent_ID
    ----------- ------ ----------- ----------- ------ -----------
    52          100018 3           3           会员充值   -1
    53          100018 6           6           系统管理   -1
    54          100018 10          10          价格设置   6
    55          100018 100         NULL        NULL   NULL
    */
      

  5.   

    B表新增一条数据
    O_ID              A_ID
    100018             9
    ------------A表ID=6怎么显示?
      

  6.   

    是这样新增的
    ID      name             Parent_ID          ID         O_ID               A_ID
    9      商品管理                6                   55      100018             9A表ID和B表A_ID关联,,,,,,,,,A表的ID与 Parent_ID关联
      

  7.   


    应该不会在重复吧
    B表ID=53的记录对应的应该是A表ID=6的记录
    B表ID=54的记录对应的应该是A表ID=10的记录因为我想要的结果集应该是这样的ID      name             Parent_ID          ID         O_ID               A_ID
    1      消费结算               -1                NULL      NULL              NULL
    2      会员管理               -1                NULL      NULL              NULL
    3      会员充值               -1                   52        100018               3
    4      订单列表               -1                NULL      NULL              NULL
    5      系统统计               -1                NULL      NULL              NULL
    6      系统管理               -1                   53        100018               6
    7      操作记录               -1                NULL      NULL              NULL
    8      管理员管理            6                NULL      NULL              NULL
    9      商品管理                6                NULL      NULL              NULL
    10   价格设置                 6                   54        100018             10
    11   会员规则设置         6                NULL      NULL              NULL
    12   消费操作记录         7                NULL      NULL              NULL
    13   会员操作记录         7                NULL      NULL              NULL
      

  8.   

    看结果集直接左联就行了SELECT  *
    FROM    A
            LEFT JOIN B ON a.ID = b.A_ID
                           AND b.O_ID = '100018';
      

  9.   

    就 left  join啊  
      

  10.   

    SELECT * FROM A  LEFT JOIN (SELECT * FROM B WHERE O_ID = '100018' ) AS T   ON T.OID=A.ID
    这个应该能满足你的要求