0

complete_shifts、incomplete_shifts、incomplete_shift_register という名前の 3 つのテーブルを作成しました。3 つのテーブルすべてに、employee_no と date という 2 つの列が含まれています。指定された日付の 3 つのテーブルすべてから、employee_no 列の個別の値の数を取得したいと考えています。

例: " date = 2013-06-13 " を指定すると、 count は3になります。(従業員番号: 0008,0019,0035 )

complete_shifts

shift_id |   date   | employee_no | sign_in_at | sign_out_at

1        |2013-06-13|   0008      | 7:05       | 16:05
2        |2013-06-13|   0008      | 7:10       | 16:05
3        |2013-06-14|   0025      | 7:11       | 16:10

incomplete_shifts

 shift_id  |    date   | employee_no |  sign_in_at |sign_out_at

   1       | 2013-06-13|    0019     |   7:08      |    

incomplete_shift_register

 shift_id |   date    |employee_no | sign_in_at

  1       | 2013-06-13|   0008     |    7:08
  2       | 2013-06-13|   0035     |    7:09
  3       | 2013-06-14|   0060     |    7:11

上記の状況の SQL 構文の書き方がわかりません... plezzz 助けてください..

ありがとうございました。

4

3 に答える 3

0
SELECT count(*) from 
(
SELECT 1 from complete_shifts WHERE date="2013-06-13"
UNION ALL
SELECT 1 from incomplete_shifts WHERE date="2013-06-13"
UNION ALL
SELECT 1 from incomplete_shift_register WHERE date="2013-06-13"
)t
于 2013-06-14T16:23:37.137 に答える
0

ちょうどUNION一緒にテーブルとCOUNT。はUNION重複を削除するので、簡単な方法COUNTでうまくいきます - はCOUNT DISTINCT必要ありません。これは、カウントのみが必要な場合に機能します。他の値が必要な場合は、クエリが少し複雑になります。

SELECT COUNT(*) FROM (
  SELECT employee_no
    FROM complete_shifts
    WHERE date = '2013-06-13'
  UNION SELECT employee_no
    FROM incomplete_shifts
    WHERE date = '2013-06-13'
  UNION SELECT employee_no
    FROM incomplete_shift_register
    WHERE date = '2013-06-13'
 ) AllShifts
于 2013-06-14T16:22:06.850 に答える