SQL我使用Subquery还是什么?

时间:2016-07-01 22:06:18

标签: sql ms-access count subquery

好的,所以我有3张桌子:

see this image

我需要返回哪些车辆已经接收到150次以上的固定

提前感谢:)

3 个答案:

答案 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 BYCAR_ID打扰表并计算COUNT函数中合并的行,而HAVING开始一个谓词,过滤聚合函数的结果

答案 2 :(得分:0)

不,只需使用两个内连接。然后按车分组并计算行数。