mysqlで曜日を取得してその日に記入しているかチェックしたい。する質問をすることでしか得られない、回答やアドバイスがある。mysqlで曜日を取得してその日に記入しているかチェックしたい。19mysqlのクエリ文について困っているため、お力をお借りしたいです。曜日を設定してその日に報告書の書き忘れがあった場合にアラートを出してその日付を取得したい。5.6◆上記の実装をするための環境づくり。DBに対して2つのテーブルを用意。回答を頂いて、改めて記入しなおしました。2017-10-07の段階で上記の場合、三郎さんが報告書を1つ書き忘れているのと四郎さんが報告書を書き忘れています。6日は自社が休みなため記入をする必要がありません。上記の時に、3つのセレクトしたいことがあります。上記の内容の具体的なクエリ文のご指導いただければ幸いです。他の曜日は?報告書は一切書かなくても良いの?他の曜日は報告書は一切書く必要がありません。5w1hが書いてない。何時、誰が、それを知って、その結果どうしたい?詳細が足りなくてすいません。DBなど追加情報など入れますのでどうかお付き合いお願いいたします。何時:休日を除く毎週決められた会社に対して誰が:スタッフ(スタッフは変動します。)が報告書をしっかり書いているかを確認したい。それを知って:警告アラートをサイト内のメッセージ送信又は、サイト内のお知らせ一覧のようなところに表示したい。その結果:報告書の記入漏れが防げる。再度全体的に今の現状を出来るだけ再現しました。指導ご鞭撻のほどお願いいたします。attachmentクリップ0気になる質問をクリップするクリップした質問は、後からいつでもマイページで確認できます。クリップした質問に回答があった際、通知やメールを受け取ることができます。自分も答えを知りたい質問者以外のユーザにも役立つ評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。質問の評価を上げたことを取り消します低評価-評価を下げられる数の上限に達しました評価を下げることができません1日5回まで評価を下げられます1日に1ユーザに対して2回まで評価を下げられます質問の評価を下げるteratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。コメントをしてください。送信する質問の評価を下げる機能の利用条件この機能を利用するためには、以下の事項を行う必要があります。20:49制約条件があるとすれば、上記のテーブルにはないですが、休日のDBを作って、会社が休みの時はカウントしないというような条件を考えております。制約条件があるとすれば、上記のテーブルにはないですが、休日のDBを作って、会社が休みの時はカウントしないというような条件を考えております。曜日中心に考えていることです。日付中心に考えた方が良いと思います。「日付を設定して、曜日も取得する」という方が良いと思います。曜日を主キーにすると、非常に使いにくいDBになると思います。周回遅れを区別できなくなってしまいます。いや、日付も参照すれば区別は可能でしょうが、それなら最初から日付を使えば、日付だけで済みます。いうか、日付から曜日を算出するようなこともできます。「曜日」という言葉があったのかもしれません。実際の業務ではどんどんルールが複雑化していきます。日付だと千日でも一万日でも期間を設定できるので汎用的です。最初から日付にした方が、後での変更がいろいろ楽でしょう。「期限日」というデータを導入した方が、考えやすいと思います。期限まであと何日か、期限を過ぎてないかとか、そういうことがしたいでしょう。自動連番のIDを振るかどうかなど、DB設計の詳細な話はまた別です。評価が高い回答ほどページの上位に表示されます。remove低評価0回答の評価を下げる下記のような回答は推奨されていません。評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。21:31お返事遅くなりました。お返事いただきありがとうございます。おっしゃる通りで、曜日いうワードが念頭にあり上記のように書かせていただきました。日付指定の案ですが、書いていただいたとおりに、この後に祝日や休みの日が含まれないという条件がついてきます。そこでも、困っているところなのです。報告書の条件として○○社あての報告書を毎週〇曜日にもれなく書いてもらいたいというところで、お返事いただいた日付指定という形をとり「期限日」というDBを新たに設けて行う際に、どのようなDB設計をしていけばよいのか・・・phpでの構築を行っていますが期限日DBに対して動的にある曜日を過ぎたら期限の日付を挿入するというような形にするような感じでしょうか?ここで「曜日」という概念を取り払おうとししているのですが、休み以外に毎週その曜日が来るもので、曜日の代わりに未来の日付を用意を複数用意する必要があるというようなことでしょうか。毎週必ず期限が必要になりますので、DBに大量の期限日が出来てしまうかなと危惧しているのですが、そんなことは、些細なことなのでしょうか。上手く頭で整理できていなくてもうしわけありません。具体的な流れ等いただければ幸いです。お返事遅くなりました。お返事いただきありがとうございます。おっしゃる通りで、曜日いうワードが念頭にあり上記のように書かせていただきました。日付指定の案ですが、書いていただいたとおりに、この後に祝日や休みの日が含まれないという条件がついてきます。そこでも、困っているところなのです。期限日DBに対して動的にある曜日を過ぎたら期限の日付を挿入するというような形にするような感じでしょうか?ここで「曜日」という概念を取り払おうとししているのですが、休み以外に毎週その曜日が来るもので、曜日の代わりに未来の日付を用意を複数用意する必要があるというようなことでしょうか。毎週必ず期限が必要になりますので、DBに大量の期限日が出来てしまうかなと危惧しているのですが、そんなことは、些細なことなのでしょうか。上手く頭で整理できていなくてもうしわけありません。具体的な流れ等いただければ幸いです。22:10まず、すでにあるデータを他から取ってくるとかではなく、PHPのWebアプリからのみ、DBを操作する、という前提でいいですか。>期限日DBに対して動的にある曜日を過ぎたら>期限の日付を挿入するというような形にするような感じでしょうか?シンプルなシステムからスタートすることを想定して、期限日は不変と私は考えています。最初に登録したときの期限日そのまま。期限日と現在の日付を比較するだけで済むと思います。【曜日がなくても可能です】。登録時に期限日を入力して、そのまま変えずに使えばシンプルです。曜日や営業日を算出する機能を追加しても構いません。カレンダーのUIとか作れば、入力の負担が減ります。それらは、絶対必須ではないでしょう。慣れていないなら、まず必要最低限のシステムを作るのが無難です。(ただし、依頼の要件によるでしょうけど)>毎週必ず期限が必要になりますので、>DBに大量の期限日が出来てしまうかなと危惧MySQLはたとえば1万件くらいではビクともしません。節約する必要は薄いです。ユーザが1万件から探すための、使いやすいUIとかの工夫は必要かも。自動連番のIDを振るのは有効だと思います(だから最後に少し触れました)。いうか、重複をなくすのにIDが一番確実だし、PHPで完結していれば確実にIDを振れます。要件が曖昧なまま、話を複雑にしたくなかったので、掘り下げなかっただけです。PHPのWebアプリからのみ、DBを操作する、という前提でいいですか。シンプルなシステムからスタートすることを想定して、期限日は不変と私は考えています。最初に登録したときの期限日そのまま。期限日と現在の日付を比較するだけで済むと思います。【曜日がなくても可能です】。登録時に期限日を入力して、そのまま変えずに使えばシンプルです。曜日や営業日を算出する機能を追加しても構いません。カレンダーのUIとか作れば、入力の負担が減ります。それらは、絶対必須ではないでしょう。慣れていないなら、まず必要最低限のシステムを作るのが無難です。MySQLはたとえば1万件くらいではビクともしません。節約する必要は薄いです。ユーザが1万件から探すための、使いやすいUIとかの工夫は必要かも。自動連番のIDを振るのは有効だと思います(だから最後に少し触れました)。いうか、重複をなくすのにIDが一番確実だし、PHPで完結していれば確実にIDを振れます。要件が曖昧なまま、話を複雑にしたくなかったので、掘り下げなかっただけです。同じデータが2つ存在するということはアクセスされたときにどちらがヒットするか確定できません(sqlには前のデータとか後のデータという考え方はありません)データとして成立させたいのであればレコードにidを振る必要があるでしょう当然テーブルBについては、テーブルAで振ったidに対してリレーションしていく必要があります。現在はおそらく名前と記入日をキーに処理する想定なのでしょうけど前記した理由によりテーブルAのレコードを確定できていません。評価が高い回答ほどページの上位に表示されます。remove低評価0回答の評価を下げる下記のような回答は推奨されていません。評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。commentコメント投稿link+4火曜日に報告書が2つですか......以下が不明確なのでなんとも言えませんね。他の曜日は?報告書は一切書かなくても良いの?5w1hが書いてない。何時、誰が、それを知って、その結果どうしたい?いずれにせよ、テーブルが第三正規になってないのでそれに準拠させたほうが良いでしょう。以下の2テーブルで管理する事以外は考えられません。idはオートインクリメントで考えています、4Byteを削りたい目的で取り除かれるケースはありますが、そこまでシビアな設計が求められない場合はとりあえず用意しておいた方が良いでしょう。(社員)mailのように社員に付属する情報はこのテーブルで新しいカラムを用意して使ってください。運用フェイズの事を考えます。サンプルとして2つ考えました。水曜日の昼過ぎに、社長や総務の人、もしくは上司が部下の提出状況を確認したい火曜日の夕方16時頃になったらまだ書いてない社員に自動的に催促メールを出したいまず前者、Webページを用意してtableタグで書いてない社員の一覧表を見せる感じになります。上司であれば部下の状態のみに絞る必要があります。基本はパラメータを渡してその週の火曜日しか見れないという設計にしておきましょう。今日(木曜日)という日時から火曜日は2日前と一瞬で判断できます。今週の火曜日の日付(YYYY-MM-DD)という文字列は簡単に作成出来ます。曜日番号をテーブルに保存する必要は微塵も存在しません。次に後者、これはタスクスケジューラの出番です。Linux系ならcronが用意されていますし、WindowsにもMacにもタスクスケジューラは存在します。今日の書いたレポートの数が1以下の社員におしかりメールを送信するようにしておけば良いでしょう。ついでに水曜日の早朝も同じPHPファイルをコマンドライン起動、昨日書かずに書いた社員の上司にメールを飛ばすようにしましょう。これで水曜日の早朝に上司に叱られた社員が日誌を作るので、社長や総務に叱られる事がなくなりますね。昨日という情報はタスクスケジューラに登録する歳にコマンドライン引数を設定し、PHPで読み込む事で1つのPHPファイルで火曜日も水曜日も対応出来るようになります。評価が高い回答ほどページの上位に表示されます。remove低評価0回答の評価を下げる下記のような回答は推奨されていません。評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。mysqlで曜日を取得してその日に記入しているかチェックしたい。頂いたご意見への回答は行っておりません。