对标题感到抱歉。我不确定如何正确描述问题。
我有四个表,表A,B,X和D.A和B有多对多关系,所以我使用X作为链接表。
这是结构:
假设我拥有的是与表A中的行相对应的ID,我想选择表B中与该ID匹配的行加上表D中具有相同{{1}的所有行的计数}。呃,我很难用语言解释。
这就是我想要的(我需要搜索的是一个ID,它对应于表A中的一行 - 让我们说我有一个“A”):
b_id
因此,根据上述结果,这个特殊的“A”有两个“B”。其中一个“B”有20个“D”,另一个有12个“D”。
如何编写单个查询以向我提供我所追求的结果(同样,我正在搜索的是表A中的ID)?
答案 0 :(得分:1)
试
SELECT A.id, B.id, COUNT(B.id) AS cnt
FROM A
INNER JOIN X ON A.id = X.a_id
INNER JOIN B ON X.b_id= B.id
INNER JOIN D ON B.id = D.b_id
GROUP BY B.id
答案 1 :(得分:1)
试试这个:
SELECT b.id, COUNT(1)
FROM a,x, b,c
WHERE a.id = <YOUR_ID_FOR_A>
AND a.id = x.id
AND x.b_id = b.id
AND b.id = d,b_id
GROUP BY b.id
如果表x具有必须存在于表b中的b_id条目,那么您可以通过一个联接并使用以下查询:
SELECT b.id, COUNT(1)
FROM a,x,c
WHERE a.id = <YOUR_ID_FOR_A>
AND a.id = x.id
AND x.b_id = d,b_id
GROUP BY b.id
编辑:纠正错字,改变了。 to,as column separator。