2013-03-06 92 views
1

我有用于计算组件此SQL查询:选择基于状态

SELECT COUNT(CS.COMPONENTTYPEID) AS CNT 
FROM COMPONENTTYPE CT LEFT 
OUTER JOIN COMPONENTSTATS CS ON CS.COMPONENTTYPEID = CT.COMPONENTTYPEID 
WHERE CT.COMPONENTTYPEID IN (?, ?) 
GROUP BY CT.NAME, 
     CT.COMPONENTTYPEID 
ORDER BY CT.COMPONENTTYPEID 

我要选择具有status = 'Active'所有组件。我需要插入的正确位置在哪里?也许这:

SELECT COUNT(CS.COMPONENTTYPEID) AS CNT 
FROM COMPONENTTYPE CT LEFT 
OUTER JOIN COMPONENTSTATS CS ON CS.COMPONENTTYPEID = CT.COMPONENTTYPEID 
WHERE CT.COMPONENTTYPEID IN (?, ?) WHERE STATUS = 'Active' 
GROUP BY CT.NAME, 
     CT.COMPONENTTYPEID 
ORDER BY CT.COMPONENTTYPEID 
+0

这表是STATUS coloumn COMPONENTSTATS或COMPONENTTYPE – ssilas777 2013-03-06 19:29:12

+0

状态在表COMPONENTSTATS – 2013-03-06 19:30:40

+1

什么表'Status'从何而来?如果你在WHERE需要两个条件(在你的情况下),你可以使用AND。就像在哪里......和......一样 – 2013-03-06 19:31:24

回答

2
SELECT COUNT(CS.COMPONENTTYPEID) AS CNT 
FROM COMPONENTTYPE CT 
    LEFT OUTER JOIN COMPONENTSTATS CS ON CS.COMPONENTTYPEID = CT.COMPONENTTYPEID AND CS.STATUS = 'Active' 
WHERE CT.COMPONENTTYPEID IN (?, ?) 
GROUP BY CT.NAME, CT.COMPONENTTYPEID 
ORDER BY CT.COMPONENTTYPEID 

过滤器应在加入条款,因为它是用于创建连接表的结果集。

2

你要么需要有一种化合物whereclause,否则你invalide你离开加盟..

SELECT COUNT(CS.COMPONENTTYPEID) AS CNT 
FROM COMPONENTTYPE CT 
LEFT OUTER JOIN COMPONENTSTATS CS 
    ON CS.COMPONENTTYPEID = CT.COMPONENTTYPEID 
WHERE CT.COMPONENTTYPEID IN (?, ?) and (STATUS = 'Active' or Status is null) 
GROUP BY CT.NAME, 
     CT.COMPONENTTYPEID 
ORDER BY CT.COMPONENTTYPEID 

,或者你有把限制条件的加入本身。

SELECT COUNT(CS.COMPONENTTYPEID) AS CNT 
FROM COMPONENTTYPE CT 
LEFT OUTER JOIN COMPONENTSTATS CS 
    ON CS.COMPONENTTYPEID = CT.COMPONENTTYPEID 
    AND (STATUS = 'Active') 
WHERE CT.COMPONENTTYPEID IN (?, ?) 
GROUP BY CT.NAME, 
     CT.COMPONENTTYPEID 
ORDER BY CT.COMPONENTTYPEID 
1

由于STATUS Coloumn是COMPONENTSTATS表,查询应该是

SELECT COUNT(CS.COMPONENTTYPEID) AS CNT 
FROM COMPONENTTYPE CT LEFT 
OUTER JOIN COMPONENTSTATS CS ON CS.COMPONENTTYPEID = CT.COMPONENTTYPEID 
WHERE CT.COMPONENTTYPEID IN (?, ?) AND CS.STATUS = 'Active' 
GROUP BY CT.NAME, 
     CT.COMPONENTTYPEID 
ORDER BY CT.COMPONENTTYPEID