Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL多列求和脚本_Mysql_Sql_Database_Mysql Workbench_Sql Scripts - Fatal编程技术网

MySQL多列求和脚本

MySQL多列求和脚本,mysql,sql,database,mysql-workbench,sql-scripts,Mysql,Sql,Database,Mysql Workbench,Sql Scripts,对不起,我是mysql的乞丐,我需要尽快得到帮助。 所以,我有两张桌子 程序指南: idProcedure INT(PRIMARY KEY) ProcedureName VARCHAR(45) ProcedureCost DOUBLE ProcedureTax DOUBLE TotalCost DOUBLE AS ProcedureTax+ProcedureCost 病人药膏: idAppointment INT(PRIMARY KEY) idProcedure1 INT idProcedu

对不起,我是mysql的乞丐,我需要尽快得到帮助。 所以,我有两张桌子

程序指南:

idProcedure INT(PRIMARY KEY)
ProcedureName VARCHAR(45)
ProcedureCost DOUBLE
ProcedureTax DOUBLE
TotalCost DOUBLE AS ProcedureTax+ProcedureCost
病人药膏:

idAppointment INT(PRIMARY KEY)
idProcedure1 INT 
idProcedure2 INT 
idProcedure3 INT
idProcedure4 INT 
idProcedure5 INT
TotalCost DOUBLE
idAppointment      id1   id2   id3  id4  id5  TotalCost  
      1             1     3    NULL NULL NULL     52 
      2             2     4     5   NULL NULL     165
      3             4    NULL  NULL NULL NULL     10
      4             1     2     3    4    5       217
因此,问题如下: 每个患者预约最多可以有5个医疗程序(例如,如果只有3个,则前3个idProcedcedure将具有程序id,其余将为空)。我曾尝试将PatientAppoint中的5个id作为ProcedureCatalogue中idProcedure的外键,但似乎不起作用(我使用的是最新版本的MySQL Workbench,当我尝试为idProcedure选择列时,ProcedureCatalogue中没有任何列出现)但这不是真正的问题,因为在插入数据时可以使用正确的信息来完成

我需要做的是,我真的不知道如何制作一个脚本,使每个过程的总成本等于总成本的总和

例如,如果您有2个程序(最多可以是5个(来自Patients的idProcedure与来自ProcedureCatalog的idProcedure共同响应))

您将得到类似于: 程序目录:

   id ProcedureName  ProcedureCost  ProcedureTax  TotalCost
    1 procedure1          20            30           50
    2 procedure2          40            60          100
    3 procedure3          1              1            2
    4 procedure4          5              5           10
    5 procedure5         25             30           55
至于药膏:

idAppointment INT(PRIMARY KEY)
idProcedure1 INT 
idProcedure2 INT 
idProcedure3 INT
idProcedure4 INT 
idProcedure5 INT
TotalCost DOUBLE
idAppointment      id1   id2   id3  id4  id5  TotalCost  
      1             1     3    NULL NULL NULL     52 
      2             2     4     5   NULL NULL     165
      3             4    NULL  NULL NULL NULL     10
      4             1     2     3    4    5       217
因此,请帮助我编写脚本,用于填充PatientPayment中的总成本,我在过去6个小时内一直在尝试,但我没有成功:(.

更新PatientPayment pa
左连接过程在pa.idProcedure1=pc1.idProcedure上调用pc1
左连接过程pa.idProcedure上的目录pc2=pc2.idProcedure
左连接过程在pa.idProcedure上调用pc3=pc3.idProcedure
左连接过程在pa.idProcedure4=pc4.idProcedure上调用pc4
左连接过程在pa.idProcedure上调用pc5=pc5.idProcedure
设置pa.TotalCost=合并(pc1.TotalCost,0)
+合并(pc2.TotalCost,0)
+合并(pc3.TotalCost,0)
+合并(pc4.TotalCost,0)
+合并(pc5.TotalCost,0);

如果我想要第六个过程,而钱很少是双倍的,那该怎么办?这就是为什么十进制被发明的原因。@草莓这是一个更大的大学作业的一部分,我正在使用提供给我的数据类型。好吧,我能说的是,如果是我,我会从修复模式开始,使用适当的数据类型和标准化设计。@草莓can请给我一些提示(就像我说的我是MySql中的乞丐)当你发现自己有枚举列名时(比如上面的2),你可以确定你的设计是次优的。约会和约会时的详细过程是两件不同的事情,属于两个单独的表。