获取基于多个条件的多对多关系记录

时间:2019-09-30 09:21:03

标签: mysql sql

我正在使用MYSQL数据库,其中有以下3个表,其中table1和table2具有多对多关系,并且映射存储在table3中。<​​/ p>

表1:

id  key             value
1   Application     java
2   Application     erp
3   Application     sap
4   DB              mysql
5   DB              oracle
6   DB              sql
7   DB              postgres

表2:

id  data            type
1   HTML            UI
2   JAVA            Backend
3   JavaScript      UI
4   CSS             UI
5   Query           DB
6   Procedure       DB
7   Function        DB

表3(映射):

id  Table1_id   Table2_id
1   1           2
2   1           1
3   1           3
4   1           6
5   2           1
6   2           2
7   3           6
8   4           5
9   4           7
10  5           5
11  5           6
12  5           7
13  6           5
14  6           6
15  7           7

问:我想要基于键和值的结果,该结果应该返回表2中的通用数据。

例如:如果用户通过(键=应用程序且值= java)和(键= db且值= sql)

然后它将返回以下结果。

Key             Value   Data        Type
Application     java    Procedure   db
query           db      Procedure   db

1 个答案:

答案 0 :(得分:-1)

使用加入

select key,value,data,type from table_mapping m join
table1 t1 on m.Table1_id=t1.id
join table2 t2 on m.Table2_id=t2.id  

 where 
   (key,value) in ( ('application','java'),
                    ('query','db')
                   )