【问题标题】:Limit number of patients by appointment and type of exam (PHP - MYsql) [closed]通过预约和检查类型限制患者数量(PHP - MYsql)[关闭]
【发布时间】:2017-08-05 23:23:25
【问题描述】:

我正在为一个办公室开发一个网络系统,在家中的患者可以在系统中注册,这样就可以预约特定类型的检查。

当患者请求预约时,他会放置他的个人数据,并放置所需的测试类型。我在 mysql 中有一个名为“exam type”的表,其中找到了 5 种类型的考试以及实践提供的时间表,也就是说,每种类型的考试都是在每天指定的时间间隔内实现的。

到目前为止,一切进展顺利,我想限制可以要求一天进行这种测试的患者数量,但我未能成功实现。

该办公室每天只允许 20 次预约,但每种检查最多只允许 5 名患者。

我想知道,你怎么能限制每天只有 5 位患者可以要求预约该类型的检查?

我不知道如何限制系统的这一部分,我希望他们能帮助我。我感谢任何在我的问题上支持我的人。

【问题讨论】:

  • 您首先需要做的是计算当天有多少预约,然后检查是否有 20 名以下患者。如果少于 20 个,您应该检查特定的考试类型,看看是否少于 5 个。我猜您知道如何编写这部分代码?
  • @MinistryofChaps 显然,这不是人们需要的 ;-)

标签: php mysql


【解决方案1】:

考虑以下几点:

DROP TABLE IF EXISTS bookings;

CREATE TABLE bookings 
(booking_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
,user_id INT NOT NULL
,type INT NOT NULL
,booking_date DATE NOT NULL
,UNIQUE(user_id,booking_date)
);

INSERT INTO bookings (user_id, type, booking_date)
SELECT 1
     , 1
     , '2017-08-05'
  FROM (SELECT 1) x
 WHERE (SELECT COUNT(*)
          FROM bookings
         WHERE booking_date = '2017-08-05'
           AND type = 1) < 5;
Query OK, 1 row affected (0.00 sec)
Records: 1  Duplicates: 0  Warnings: 0

INSERT INTO bookings (user_id, type, booking_date)
SELECT 2
     , 1
     , '2017-08-05'
  FROM (SELECT 1) x
 WHERE (SELECT COUNT(*)
          FROM bookings
         WHERE booking_date = '2017-08-05'
           AND type = 1) < 5;
Query OK, 1 row affected (0.00 sec)
Records: 1  Duplicates: 0  Warnings: 0

INSERT INTO bookings (user_id, type, booking_date)
SELECT 3
     , 1
     , '2017-08-05'
  FROM (SELECT 1) x
 WHERE (SELECT COUNT(*)
          FROM bookings
         WHERE booking_date = '2017-08-05'
           AND type = 1) < 5;
Query OK, 1 row affected (0.00 sec)
Records: 1  Duplicates: 0  Warnings: 0

INSERT INTO bookings (user_id, type, booking_date)
SELECT 4
     , 1
     , '2017-08-05'
  FROM (SELECT 1) x
 WHERE (SELECT COUNT(*)
          FROM bookings

         WHERE booking_date = '2017-08-05'
           AND type = 1) < 5;
Query OK, 1 row affected (0.00 sec)
Records: 1  Duplicates: 0  Warnings: 0

INSERT INTO bookings (user_id, type, booking_date)
SELECT 5
     , 1
     , '2017-08-05'
  FROM (SELECT 1) x
 WHERE (SELECT COUNT(*)
          FROM bookings
         WHERE booking_date = '2017-08-05'
           AND type = 1) < 5;
Query OK, 1 row affected (0.00 sec)
Records: 1  Duplicates: 0  Warnings: 0

SELECT * FROM bookings;
+------------+---------+------+--------------+
| booking_id | user_id | type | booking_date |
+------------+---------+------+--------------+
|          1 |       1 |    1 | 2017-08-05   |
|          2 |       2 |    1 | 2017-08-05   |
|          3 |       3 |    1 | 2017-08-05   |
|          4 |       4 |    1 | 2017-08-05   |
|          5 |       5 |    1 | 2017-08-05   |
+------------+---------+------+--------------+
5 rows in set (0.00 sec)

INSERT INTO bookings (user_id, type, booking_date)
SELECT 6
     , 1
     , '2017-08-05'
  FROM (SELECT 1) x
 WHERE (SELECT COUNT(*)
          FROM bookings
         WHERE booking_date = '2017-08-05'
           AND type = 1) < 5;
Query OK, 0 rows affected (0.00 sec)
Records: 0  Duplicates: 0  Warnings: 0

SELECT * FROM bookings;
+------------+---------+------+--------------+
| booking_id | user_id | type | booking_date |
+------------+---------+------+--------------+
|          1 |       1 |    1 | 2017-08-05   |
|          2 |       2 |    1 | 2017-08-05   |
|          3 |       3 |    1 | 2017-08-05   |
|          4 |       4 |    1 | 2017-08-05   |
|          5 |       5 |    1 | 2017-08-05   |
+------------+---------+------+--------------+
5 rows in set (0.00 sec)

【讨论】:

  • 我看不到您的代码在哪里检查日期是否少于 20 个约会。有 5 种不同的考试类型,因此如果在一天内选择了每种考试类型,将有 25 次预约。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-11-15
  • 2023-03-08
  • 1970-01-01
  • 2014-11-13
  • 1970-01-01
  • 2014-02-24
  • 1970-01-01
相关资源
最近更新 更多