0

私はこれらの2つのMySQLテーブルを持っています:

desc students;
+---------------------------+---------------+
| Field                     | Type          |
+---------------------------+---------------+
| student_id                | INT(11)       |
| student_firstname         | VARCHAR(255)  |
| student_lastname          | VARCHAR(255)  |
+---------------------------+---------------+

desc studentabsence;
+---------------------------+---------------+
| Field                     | Type          |
+---------------------------+---------------+
| student_id                | INT(11)       |
| student_absence_startdate | date          |
| student_absence_enddate   | date          |
+---------------------------+---------------+

次のクエリを実行すると:

SELECT 
    * 
FROM 
    students s 
        INNER JOIN studentabsence sa 
            ON s.student_id = sa.student_id
WHERE s.student_id = '1'

次の出力が得られます。

+------------+-------------------+-----------------+------------+---------------------------+-------------------------+
| student_id | student_firstname | student_lastname| student_id | student_absence_startdate | student_absence_enddate |
+------------+-------------------+-----------------+------------+---------------------------+-------------------------+
|       1    | John              | Doe             | 1          | 2012-08-01                | 2012-08-08              |
+------------+-------------------+-----------------+------------+---------------------------+-------------------------+

これ<form>で、ユーザーが学生を選択できる場所と日付範囲ができました。ユーザーが選択した 2 つの日付をデータベースの値と比較して、一致する場合は、学生がデータを持っている範囲内のすべての営業日をエコーすることができるかどうか疑問に思います。

したがって、ユーザーが次のフォームを投稿した場合、上記の例を使用します。

student_id = '1'
student_absence_startdate = '2012-08-02'
student_absence_enddate = '2012-08-06'

したいことecho

2012-08-02
2012-08-03
2012-08-06

正しい方向へのポインタは高く評価されます。

4

1 に答える 1

0

私はこの回答を質問に基づいてのみ投稿しています。また、データ型を日付のままにしておくと、非常に役立ちます。

SELECT * FROM students s
INNER JOIN studentabsence sa ON s.student_id = sa.student_id
AND s.student_id = '1'
AND student_absence_startdate >= 2012-08-02
AND student_absence_enddate < 2012-08-06
于 2012-08-13T09:56:04.713 に答える