MySQL SELECT通过xref表加上另一个表的行计数

时间:2011-01-05 06:14:50

标签: mysql

对标题感到抱歉。我不确定如何正确描述问题。

我有四个表,表A,B,X和D.A和B有多对多关系,所以我使用X作为链接表。

这是结构:

DB Structure

假设我拥有的是与表A中的行相对应的ID,我想选择表B中与该ID匹配的行加上表D中具有相同{{1}的所有行的计数}。呃,我很难用语言解释。

这就是我想要的(我需要搜索的是一个ID,它对应于表A中的一行 - 让我们说我有一个“A”):

b_id

因此,根据上述结果,这个特殊的“A”有两个“B”。其中一个“B”有20个“D”,另一个有12个“D”。

如何编写单个查询以向我提供我所追求的结果(同样,我正在搜索的是表A中的ID)?

2 个答案:

答案 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。