首页 > 解决方案 > 基于多个条件获取Many 2 Many关系的记录

问题描述

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

表格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

问:我想要基于 key 和 value 的结果,它应该从 table2 返回公共数据。

例如:如果用户通过 (key = application and value = java) and (key = db and value = sql)

然后它应该返回以下结果。

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

标签: mysqlsql

解决方案


使用连接

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

推荐阅读