UI設計したり、ウェブシステムを開発したりします。 

SQL見るだけクエリ#004 今日と同じ曜日に書かれた記事のみ取得

記入日:2022-12-25 編集日:2022-12-25

SQL見るだけクエリ。今回はデータとして保存されている日付データから、曜日を判断し、本日の曜日と同じレコードのみ取得するSQLを書いてみようと思います。

この記事を読むと(約3分)
保存されている日付データを活用し様々な取得条件を作る事ができます。今回はその1つの例として、日付データから曜日を特定し取得条件に加える方法を知る事ができます。

以下のような、日付(date)データをもつ、記事投稿テーブルを用意しました。

テーブル名:sample_note

idtittledatemember_idlinestatus
1AAAAA2022-12-261501
2BBBBB2022-12-272501
3CCCCC2022-12-283501
4DDDDD2022-12-29500
5EEEEE2022-12-301501

以下のコードは、本日(閲覧している今現在)の曜日と同じ曜日に書かれた記事を取得するSQLです。いつもの様に、ポイントは、9~11行目のみです。

SELECT * FROM sample_note WHERE DAYOFWEEK(date) = DAYOFWEEK(CURDATE()); この部分で、データベースの全てのレコードのうち、記入された日の曜日と今現在の曜日が同じものだけを取得しております。

WHERE 条件は

DAYOFWEEK(date) = DAYOFWEEK(CURDATE());
dateの日付を読み取って曜日に変換 と 現在の曜日 が同じ

といった感じです。

try {
    include_once '../model/class.php';

    // データベース接続
    $database = new Database();
    $db = $database->connect();

    // SQLを準備し、パラメータをバインドする
    $query = 'SELECT * FROM sample_note 
    WHERE DAYOFWEEK(date) = DAYOFWEEK(CURDATE())';
    $stmt = $db->prepare($query);

    // 実行する
    $stmt->execute();

    // 結果を取得する
    $result = $stmt->fetchAll(PDO::FETCH_ASSOC);
    print_r($result);

    // データベースから切断する
    $database->disconnect();

} catch(PDOException $e) {
    echo $e->getMessage();
}

これを実行すると、二次元連想配列という形式で、結合された情報を取得することができます。

            Array
(
)
			

見やすくする為に、HTMLとCSSで体裁を整え、本日の曜日を追加で表示しました。

投稿した曜日が、本日の曜日と同じ記事を取得

id tittle date 曜日

(土・日には対象の投稿はありません)

SQLにも便利な関数が数多く用意されていますので、処理の高速化が期待出来ます。またプログラム記述の効率も良くなり、ありがたいです。

SQLの使いどころ

サイトに大量の情報を掲載することは、ユーザーにとってとても便利なことです。しかし、情報が多すぎると、目的の情報を見つけるのが困難になります。そのため、SQLを使用することで、情報を効率的に管理することができます。

SQLを使用することで、データベース内の情報を検索したり、フィルタリングしたりすることができます。これにより、ユーザーは目的の情報をスムーズかつ簡単に見つけることができます。

また、SQLを使用することで、データを集計したり、統合したりすることもできます。これにより、ユーザーはさまざまな視点から情報を分析することができます。つまり、サイトに多くの情報を掲載することが重要である一方で、その情報を効率的かつ簡単に管理することが求められる場合には、SQLが不可欠であるといえます。

KK

機械工学を専攻。工業デザイナーとして、国内及び海外の自動車・搬送ラインの設計などに従事した後、2003年にウェブシステム会社を設立。UI設計やウェブシステムの開発、DX化のディレクションなどを行っています。