0

私は2つの異なるテーブルを持っています:

  1. checkin_outは、 emp_codechecked_dateの2つのフィールドで構成されています
  2. temp_daysは、 iddate_valueの2つのフィールドで構成されます

テーブルcheckin_outには次のデータがあります。

emp_code | checked_date
-----------------------
001        2012-11-01
001        2012-11-02
001        2012-11-03
002        2012-11-01
003        2012-11-01
003        2012-11-02

テーブルtemp_daysには次のデータがあります。

id  | date_value
-----------------
1     2012-11-01
2     2012-11-02
3     2012-11-03
4     2012-11-04
5     2012-11-05

上記の表から、不足している日付を表temp_daysに表示する必要があります。次のように結果を取得するには、クエリを実行する必要があります。

emp_code  |  date_value
-----------------------
001          2012-11-04
001          2012-11-05
002          2012-11-02
002          2012-11-03
002          2012-11-04
002          2012-11-05
003          2012-11-03
003          2012-11-04
003          2012-11-05

誰かが助けてくれるなら、お願いします!ありがとう!

4

2 に答える 2

1

以下は、複数のemp_codesを持つより複雑なデータセットに対して機能します。

SELECT  alldays.emp_code, alldays.date_value
FROM    (
          SELECT date_value, emp_code
          FROM temp_days
          CROSS JOIN checkin_out
          GROUP BY date_value, emp_code
        ) alldays
        LEFT JOIN checkin_out C
            ON alldays.date_value = C.checked_date
            AND alldays.emp_code = C.emp_code
WHERE   C.emp_code IS NULL
于 2012-11-30T13:39:04.803 に答える
0
SELECT  c.emp_code, a.date_value
FROM    temp_days a
        LEFT JOIN checkin_out b
            ON a.date_value = b.checked_date
        CROSS JOIN 
        (
            SELECT emp_code
            FROM checkin_out
            GROUP BY emp_code
        ) c
WHERE   b.emp_code IS NULL
于 2012-11-30T13:12:47.303 に答える