代码之家  ›  专栏  ›  技术社区  ›  Tarun. P

使用左联接返回多个值

  •  0
  • Tarun. P  · 技术社区  · 6 年前

    我使用了下面的查询,它返回正确的输出。我想进一步扩展这个查询,我不知道该如何做。

    我有两张桌子 历史查询 结核杆菌

    历史记录查询表架构

    ID     Verantwortlich             Role                           Error_text 
         [Contain UserName]      (Can be User_name Or Catagories)      
    
    15      US1                   10 ENG-PL                           zxcv
    7                                US3                              wxyz
    10      US3                                                        xyz
    20      US2                     07 ROB                            lekd
    9                                 US1                              wer
    20                            10 ENG-PL                           zlcv
    

    表模式

    UserName              Team             Skills 
     US1               10 ENG-PL
     US2               07 ROB
     US3               10 ENG-PL
    

    在我的访问表单中,我有一个组合框,用户可以在其中选择类似“10 eng-pl”的类别。

    首先,基于这个值,我想找出有多少来自tb_ma的用户,而不是从历史查询中找到所有数据,即用户名存在于“verantwortlich”列或“role”列或“categories存在于“10 eng-pl”列中。

    基于上表数据

    最终输出我需要的

    ID   Verantwortlich             Role                           Error_text 
    
    15      US1                   10 ENG-PL                           zxcv
    7                                US3                              wxyz
    10      US3                                                        xyz
    9                                US1                               wer
    20                            10 ENG-PL                           zlcv
    

    我使用的查询是

    SELECT *
    FROM history_query  left JOIN tb_MA ON history_query.Role =  tb_MA.Team 
    WHERE (((history_query.verantwortlich) IN (Select [MA-Kennung] from tb_MA 
    where team = '10  ENG-PL')))
    

    根据上面的查询,它返回以下输出

    ID   Verantwortlich             Role                           Error_text 
    
    15      US1                   10 ENG-PL                           zxcv
    10      US3                                                        xyz
    

    提供一些链接,我可以在其中学习这种类型的查询。我总是在这种问题上纠缠不休。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Tarun. P    6 年前

    我在下面的问题中找到了答案。

    SELECT *
    FROM history_query LEFT JOIN tb_MA ON history_query.verantwortlich =  tb_MA.Team
    WHERE ( ((history_query.verantwortlich) IN (Select [MA-Kennung] from tb_MA where team = '10  ENG-PL') ) 
    OR history_query.Role ='10  ENG-PL' OR   ((history_query.Role) IN (Select [MA-Kennung] from 
    tb_MA where team = '10  ENG-PL') ) );
    

    欢迎提出任何其他建议。