使用左连接返回多个值

时间:2018-06-11 08:29:51

标签: sql database ms-access join

我使用下面的查询,它返回正确的输出。我想进一步扩展这个查询,我不知道怎么能这样做。

我有两张表 history_query tb_MA

  

History_query表架构

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
  

TB_MA TAble Schema

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

在我的访问表单中,我有一个组合框,用户可以在其中选择类别' 10 ENG-PL'。

基于此值首先,我想找到TB_MA中有多少用户,而不是从history_query中找到用户名出现在列' Verantwortlich'中的所有数据。或者在“角色”栏目中或类别存在' 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 个答案:

答案 0 :(得分:1)

我在下面的查询中找到了答案。

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') ) );

欢迎任何其他建议。