通过 SQL 中的两列将一张表链接到另一张表

mns*_*ard 3 sql join

所以我有两张表。首先是姓名及其资格:

用户:

Name    Qualification
---------------------
User1   QualA  
User1   QualB  
User1   QualC  
User2   QualA  
User2   QualD  
Run Code Online (Sandbox Code Playgroud)

然后是第二个表,它将两个资格从第一个属性链接到另一个属性:

属性:

Attribute   Qual1  Qual2
------------------------
Attr1       QualA  QualC    
Attr2       QualB  QualC    
Attr3       QualA  QualD    
Attr4       QualB  QualD    
Run Code Online (Sandbox Code Playgroud)

现在我想查询数据,所以我得到这样的回报:

User     Attribute
------------------
User1    Attr1   
User1    Attr2  
User2    Attr3  
Run Code Online (Sandbox Code Playgroud)

因此,如果名称具有属性所需的两个限定,则它们可以关联在一起。

fth*_*lla 5

我会用这个:

select
  name, attribute
from
  users inner join attributes
  on users.qualification in (attributes.qual1, attributes.qual2)
group by attribute, name
having count(*)=2
Run Code Online (Sandbox Code Playgroud)

我试图根据属性所需的任何资格,将每个用户的每个资格与属性表连接起来。然后我按属性和名称分组并计算行数。

如果用户名和属性的组合有2行,则表示该用户对该属性有两个资格,我们必须将其显示出来。