答案 0 :(得分:1)
查询看起来像这样:
SELECT T1.Car, COUNT(t3.*)
FROM
Table1 T1
JOIN Table2 T2 ON T1.Id = T2.table2ID
JOIN Table3 T3 on T3.Id = T2.table3Id
GROUP BY T1.Car
Order by T1.Car
是的,你也可以做一个子查询,这样你就可以从表1中选择而不是计数,你可以用表2和表2连接回表1来做一个子查询。
但你可以使用join。我认为他们在这里会更有效率。
答案 1 :(得分:1)
首先,您正在使用关系数据库;其次,您碰巧有2个Dimension
表和1个FACT
表
维度表使得FACT
表的搜索更容易,但只有当您需要DIMENSION
表中无法获得FACT
表中的特征(例如修正[type]
。
由于您需要汽车的原始结果及其维修次数,因此请在查询中使用带有GROUP BY
条款的HAVING
。请注意,HAVING
子句仍为PREDICATE
,因此请使用正确的SARGS
。
SELECT CAR_ID, COUNT(*) --or COUNT(CAR_ID), it really does not matter
FROM FACT_TABLE
GROUP BY CAR_ID
HAVING COUNT(FIX_ID) >= 150
GROUP BY
按CAR_ID
打扰表并计算COUNT
函数中合并的行,而HAVING
开始一个谓词,过滤聚合函数的结果
答案 2 :(得分:0)
不,只需使用两个内连接。然后按车分组并计算行数。