2011-11-15 35 views
0

如何加入说tableD.id = tableC.id AND tableD.id = tableE.id? tableD和E都可能有0行,我需要对它们进行计数,即。 SELECT COUNT(E.id)。问题是我不知道在哪里声明表标识符。带LEFT JOIN的表格标识符

我已经试过:

FROM tableB的B,提出d,tableE E. ..

LEFT JOIN(表C C,提交d)ON ...

SELECT B.*, COUNT(C.id) AS cCount 
FROM tableB B 
LEFT JOIN (tableC C) 
ON (B.id = C.id) 
GROUP BY B.id 
+0

是否可以提供样品数据和您想要的结果? –

+0

看来我问了一个错误的问题,但我需要的是聚合连接的行D然后对它们进行计数,因此我将计算C和D.我的答案在于我想要的聚合。 –

+0

你现在已经提到了表C和D,那么E呢? –

回答

1

从你的问题中可以知道你在找什么有点困难,但我相信这就是它:

SELECT B.*, COUNT(C.id) AS cCount 
FROM tableB AS B 
LEFT JOIN tableC AS C ON B.id = C.id 
LEFT JOIN tableD AS D ON C.Id = D.Id 
LEFT JOIN tableE AS E ON D.Id = E.Id 
GROUP BY B.id 
+0

对于连接D和E,如果只允许表D连接发生没有行? –

+0

如果D没有任何行,则此查询仍然有效。 D和E表格不会返回任何内容(因为您将D链接到E,E不能返回任何匹配D的记录)。 –

+0

问题是我的C计数正在被E和D连接损坏。不知何故,我需要将E行排序,所以D的行数没有损坏。 –