2017-03-14 56 views
0

我有2个表:如何将一个SUM结果存储在MySQL的一列中?

Medical_Appointment 

     ID INT AUTO_INCREMENT NOT NULL, 
     Day DATE NOT NULL, 
     Start_Time TIME NOT NULL, 
     Patient_ID INT NOT NULL, 
     Service_ID INT NOT NULL, 
     PRIMARY KEY(ID) 

而且

Service 

     ID INT NOT NULL AUTO_INCREMENT, 
     Name VARCHAR(30) NOT NULL, 
     Duration VARCHAR(6) NOT NULL, 
     PRIMARY KEY(ID) 

我想每个约会的结束时间,并为我有一个查询:

SELECT DATE_FORMAT(m.Day, '%d-%m-%Y') AS `Appointment day:`, 
TIME_FORMAT(m.Start_Time, '%H:%i') AS `Appointment start time:`, 
ADDTIME(m.Start_Time, TIME_FORMAT(s.Duration, '%H:%i')) AS `Appointment end time:` 
FROM Medical_Appointment m 
JOIN Service s 
ON m.Service_ID = s.ID 
WHERE m.Day = '2017-03-14' 
ORDER BY m.Start_Time; 

这适用于我,但它只是一个临时视图,我想将结果存储在Medical_Appointment表的列中,因为我想在Java应用程序中使用该值,并将其取出来自数据库。这个有可能?

回答

0

修改您的表以添加新列。

之后,只需插入你的选择

0

你可以使用MySQL表查看该结果:

CREATE VIEW appointment_info 
AS SELECT DATE_FORMAT(m.Day, '%d-%m-%Y') AS `day`, 
    TIME_FORMAT(m.Start_Time, '%H:%i') AS `start`, 
    ADDTIME(m.Start_Time, TIME_FORMAT(s.Duration, '%H:%i')) AS `end` 
    FROM Medical_Appointment m 
    JOIN Service s 
    ON m.Service_ID = s.ID; 

然后,您可以查询视图“appointment_info就像一个通常的表例如:

SELECT `day` AS `Appointment day:`, `start` AS `Appointment start time:`, `end` AS `Appointment end time:` 
FROM appointment_info 
WHERE day = '2017-03-14' 
ORDER BY `start`; 

当然,你也可以在你的TA使用Appointment day:Appointment start time:Appointment end time:直接列名可见视图。

0

当更新持续时间时,您将有结束时间;所以你应该也包括结束时间作为一个领域。

P.S.我无法评论,所以写它作为答案

0

你可以检查数据库'触发'是否可以在这里有用。触发器应该达到目的。

相关问题