5

私はmysqlクエリを持っています:

SELECT count(*) as `present_days` 
FROM  tbl_intime_status 
WHERE employee_status = 'Out' and 
      present_status = 'Full Day' and 
      date LIKE '%/"+month2+"/"+year1+"' and 
      employee_id="+ EmpId+

このクエリから、私はノーを得ています。現在のFull Day

データベースレコードに&がありpresent_status= 'Half Day'ます。present_status = 'Full Day'

「終日」+「半日」のカウント方法は?

4

7 に答える 7

4

カウントを分離したい場合は、これを行うことができます

SELECT present_status, count(*) as `present_days` 
FROM  tbl_intime_status 
WHERE employee_status = 'Out' and 
      present_status IN ('Full Day','Half Day')
      date LIKE '%/"+month2+"/"+year1+"' and 
      employee_id="+ EmpId+
GROUP BY present_status

両方の合計が必要な場合は、これを行います

SELECT count(*) as `present_days` 
FROM  tbl_intime_status 
WHERE employee_status = 'Out' and 
      present_status IN ('Full Day','Half Day')
      date LIKE '%/"+month2+"/"+year1+"' and 
      employee_id="+ EmpId+
于 2012-08-27T06:38:09.230 に答える
3

date予約語であるため、列をエスケープすることを忘れないでください。

SELECT present_status, count(*) as `present_days` 
FROM   tbl_intime_status 
WHERE  employee_status = 'Out' and 
       present_status IN ('Full Day','Half Day')
       `date` LIKE '%/"+month2+"/"+year1+"' and 
       employee_id = " + EmpId + "
GROUP BY present_status
于 2012-08-27T06:41:21.947 に答える
2

これが機能するかどうかを試してみたい:

...

present_status in ('Full Day',  'Half Day' )

...

文法は次の場所にあります: SQL IN 演算子。

于 2012-08-27T06:41:55.387 に答える
1

それをwhere句に追加するだけINです。

...
WHERE present_status IN ('Full Day','Half Day')
...

またはとOR

...
WHERE (present_status = 'Full Day' OR present_status = 'Half Day')
...
于 2012-08-27T06:36:47.563 に答える
1

これはあなたが探しているものですか:

SELECT count(*) as present_days 
FROM tbl_intime_status 
WHERE employee_status = 'Out' 
and present_status IN ('Full Day', 'Half Day') 
and date LIKE '%/"+month2+"/"+year1+"' 
and employee_id="+ EmpId
于 2012-08-27T06:37:42.053 に答える
0

これにより、すべてのタイプのカウントが 1 行に分割されます。

SELECT SUM(IF(present_status  = 'Full Day', 1, 0)) AS full_present_days,
       SUM(IF(present_status  = 'Half Day', 1, 0)) AS half_present_days,
       COUNT(*) AS present_days
FROM  tbl_intime_status
WHERE employee_status = 'Out' and
      present_status IN('Full Day', 'Half Day') and
      date LIKE '%/"+month2+"/"+year1+"' and
      employee_id="+ EmpId+;
于 2012-08-27T06:57:49.710 に答える
0
SELECT SUM(
   CASE present_status
     WHEN 'Full Day' THEN 1
     WHEN 'Half Day' THEN 0.5
     END
 ) as `present_days`  
FROM  tbl_intime_status  WHERE employee_status = 'Out'

これがあなたが探しているクエリであることを願っています。

于 2012-08-27T07:04:11.477 に答える