Mysql 从一个表中选择行,该表中的行位于另一个具有多个条件的表中
我有3个表应用程序,概念和应用程序到概念 应用程序表Mysql 从一个表中选择行,该表中的行位于另一个具有多个条件的表中,mysql,Mysql,我有3个表应用程序,概念和应用程序到概念 应用程序表 app_id | app_name ================= 1 | foo 2 | bar 3 | foobar 4 | barfoo concept_id | concept_name ========================= 1 | english 2 | math
app_id | app_name
=================
1 | foo
2 | bar
3 | foobar
4 | barfoo
concept_id | concept_name
=========================
1 | english
2 | math
3 | science
4 | Fun
concept_id | app_id
=========================
1 | 1
2 | 1
3 | 2
4 | 3
2 | 2
2 | 4
概念表
app_id | app_name
=================
1 | foo
2 | bar
3 | foobar
4 | barfoo
concept_id | concept_name
=========================
1 | english
2 | math
3 | science
4 | Fun
concept_id | app_id
=========================
1 | 1
2 | 1
3 | 2
4 | 3
2 | 2
2 | 4
应用到概念表
app_id | app_name
=================
1 | foo
2 | bar
3 | foobar
4 | barfoo
concept_id | concept_name
=========================
1 | english
2 | math
3 | science
4 | Fun
concept_id | app_id
=========================
1 | 1
2 | 1
3 | 2
4 | 3
2 | 2
2 | 4
我想获得所有应用程序列表
,其中包含概念英语
和数学
(例如)
我怎样才能做到这一点
编辑
让我更具体一点
我有一些复选框对概念有价值。当我选中复选框时,它返回与选中概念相关的应用程序详细信息。现在,我的案例正在举例说明
如果我选中了english
和math
concept复选框,那么它将显示具有conceptenglish
或math
的应用程序详细信息,类似地,还有science
和fun
。
现在,当我检查english
、math
和science
时,结果应该显示应用程序详细信息有english
或math
和science
。意味着应用程序拥有
英语
和科学
数学
和科学
基础加入
就行了
select a.app_name
from app_to_concept ac
INNER JOIN app_table a ON ac.app_id = a.app_id
INNER JOIN concept_table c ON ac.concept_id = c.concept_id
WHERE c.concept_name IN ('english', 'math');
基本
JOIN
即可
select a.app_name
from app_to_concept ac
INNER JOIN app_table a ON ac.app_id = a.app_id
INNER JOIN concept_table c ON ac.concept_id = c.concept_id
WHERE c.concept_name IN ('english', 'math');
你想要的输出是什么?当我检查
english
和math
概念时,它应该给我foo
,因为foo
有两个概念你想要的输出是什么?当我检查english
和math
概念时,它应该给我foo
,因为foo
有两个概念