• ベストアンサー

無いデータの表示

タイムカードのデータを表示するSQLを作成しています。 データの無い日(土曜・日曜・祝日など)も表示するにはどうしたら良いでしょうか? 3/17 9:00 18:00 3/20 9:00 18:00 3/22 9:00 18:00 というデータがあって 以下のように表示したい。 3/17 9:00 18:00 3/18 3/19 3/20 9:00 18:00 3/21 3/22 9:00 18:00 環境はMysql5.0です よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

基本的な考え方は、日付用のテーブルを作成し、3/1-3/31まで登録します。そのテーブルと日付で外部結合をさせれば実現できます。 Mysqlの経験がないので、外部結合の構文はわかりませんが、MS-SQLですと、LEFT JOINを使用します。 (例) Select 勤怠テーブル.日付,勤怠テーブル.開始時間,勤怠テーブル.終了時間 From 日付テーブル LEFT JOIN 勤怠テーブル ON 日付テーブル.日付 = 勤怠テーブル.日付 WHERE MONTH(日付テーブル.日付) = 3

burton_no1
質問者

お礼

早速のご回答ありがとうございます。 私も最初は日付用テーブルを作成すれば実現可能だとは思いましたが、日付の為だけにテーブルを作ることに抵抗があったので、もしかして別な方法があればと思い投稿しました。 でもnandarou-1011さんのSQLの方がシンプルでベストなのかもしれませんね。もう少し考えたいと思います。

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

ちゃんとしたテーブルをつくりたくないなら テンポラリをつかって処理するのが妥当かも しれませんね。 MySQL5にはloopやwhile処理があるらしいので 場合によっては記述は簡素に済むかもしれません。 (私は古い環境なので5での検証はしていません) ただこの手の処理の場合、会社によって 休日がことなるため、全日数を予めカレンダー テーブルに設定しておき、休みをフラグ管理 するのが賢明かとおもいますがいかがでしょうか?

burton_no1
質問者

お礼

ご回答ありがとうございます。 やはり一般的にはテーブルを作るやり方なんですね。 そちらの方向で考えたいと思います。

関連するQ&A