【发布时间】:2018-02-15 13:59:31
【问题描述】:
我有 3 个表,其中 2 个(A 和 B)有多对多关系,它们通过枢轴 C 表连接。表格描述:
A(id, name)
B(id, is_required)
C(a_id, b_id)
我想从A 表中选择记录,B 表中的相关记录 ID 在提供的输入中并符合某些条件。例如:
以免说我有整数列表(ids)[1,2,3,4,8,12],还有来自A 的一条记录有来自B 的5条相关记录,例如:
A
id name
1 test
-------------
B
id is_required
1 true
2 true
3 false
10 false
16 false
我需要从表 A 中选择记录,并从表 B 中加入相关记录,并检查 - 如果我的列表 ([1,2,3,4,8,12]) 中存在来自 B 的所有必需 (is_required = true) 记录 ID,那么我们选择这条记录,否则不选择。所以应该选择第一个示例,因为来自B(1 和 2)的所有必需记录都存在于列表中。例如这个:
A
id name
2 test2
-------------
B
id is_required
1 true
2 true
5 true
6 false
不应选择,因为列表中未提供 ID 为 5 的所需记录。我怎样才能在mysql中实现这个?查询示例:
SELECT A.id, A.name FROM A, B, C
WHERE A.id = C.a_id
AND C.b_id = B.id
如你所见,目前它只连接相关数据,我真的不知道我应该如何实现它。你能帮帮我吗?
【问题讨论】: