我有一个数据库(为了这个例子的目的),有两个具有多对多关联的表(带有用于保存关联的中间表)。这是结构:
表A:
+-----+-------+-------+-------+
| aID | aCol1 | aCol2 | aCol3 |
+-----+-------+-------+-------+
| 1 | foo | aoo | doo |
+-----+-------+-------+-------+
| 2 | bar | aar | dar |
+-----+-------+-------+-------+
| 3 | baz | aaz | daz |
+-----+-------+-------+-------+
表B:
+-----+-------+
| bID | bCol1 |
+-----+-------+
| 1 | alice |
+-----+-------+
| 2 | bob |
+-----+-------+
协会表:
+-----+-----+
| aID | bID |
+-----+-----+
| 1 | 1 |
+-----+-----+
| 2 | 2 |
+-----+-----+
| 3 | 1 |
+-----+-----+
如果我想通过aCol2 LIKE'aa%'搜索信息,并且该行与bCol1 ='bob'有关联(即只产生aID = 2行),我怎么能组装一个可以执行的MySQL查询类似的东西?
P.S。很抱歉清晰度差,我不完全确定措辞,但在坚果壳中,它是关于从一个记录中搜索数据(为此目的)通过连接表与一个1- *关系记录数,按整个集合中存在的信息
答案 0 :(得分:2)
SELECT
a.*
FROM
table_b b
INNER JOIN associations ab ON (b.b_id = ab.b_id)
INNER JOIN table_a a ON (ab.a_id = a.a_id)
WHERE
b.col_1 = 'bob'
AND a.col_2 LIKE 'aa%'
答案 1 :(得分:1)
已经有一段时间了,但我相信这应该有效:
SELECT
*
FROM
A,
B,
associations
WHERE
A.aCol2 LIKE 'aa%' AND
A.aID = associations.aID AND
associations.bID = B.bID
你必须做2个内连接来组合3个表。