首页 > 解决方案 > 从不同的mysql表中输入数据

问题描述

我目前的查询是:

INSERT INTO `ipdKayaChikitsaF`(`IPDNo`, `OPDNo`, `RegNo`, `PatientId`, `PDep`, `PWard`, `PBed`, `pSymptom`, `PDisease`, `PName`, `PMob`, `uid`, `PSex`, `PAge`, `PMStatus`, `PFname`, `PAddr`, `PDist`, `PState`, `OPDDate`, `dischargeStatus`, `admitOn`, `dischargeOn`, `CreatedOn`, `CreatedBy`) 
SELECT '1',OPDNo,RegNo,PatientId,PDep,'Kaya Chikitsa (Female)','1',pSymptom,'na',pname,PMob,uid,PSex, PAge,PMStatus,PFname,PAddr,PDist,PState,OPDDate,'0',OPDDate,'0000-00-00',OPDDate,'$user' 
from `opd` 
where OPDDate=STR_TO_DATE('$curDate','%Y-%m-%d 00:00:00') AND PDep='Kaya Chikitsa' AND PSex=0 GROUP BY `OPDNo`  
ORDER BY RAND() LIMIT $ipdKayaChikitsaF";

上面的查询工作正常:

现在请检查上述查询中提到的选择查询。在这里,我从表中选择了一些值,其中一些是硬编码的。现在我希望 从另一个应该存在条件的表中填充PBed值。

我的床头柜有 3 列,例如

  病房 | 床号 | 地位
Kaya Chikitsa (女) 1 0
Kaya Chikitsa (女) 2 0
Kaya Chikitsa (女) 3 1
Kaya Chikitsa(男)4 0
Kaya Chikitsa(男)5 1
Kaya Chikitsa(男)6 0

我想用床单上的床号填充 PBed,它应该有 Ward='Kaya Chikitsa (Female)' 和 Status=0 的条件;

我的结果应该是这样的

桌子ipdKayaChikitsaF

`IPDNo` | `OPDNo` | `RegNo` | `患者身份` | `PDep | `PWard` | `PBed` 等等...

1 267 1 12 Kaya Chikitsa Kaya Chikitsa (女) 1 等等...
2 352 8 15 Kaya Chikitsa Kaya Chikitsa(女)2等等...
等等...

请检查上面的表格,她我希望按照上述条件从床头柜中填充 PBed 列。

标签: mysqlsql

解决方案


在选择查询中使用连接。注意表 opd 必须具有 pward 的连接字段才能使此查询起作用,并且我假设床表名称是 bed_table

INSERT INTO `ipdKayaChikitsaF`(`IPDNo`, `OPDNo`, `RegNo`, `PatientId`, `PDep`, `PWard`, `PBed`, `pSymptom`, `PDisease`, `PName`, `PMob`, `uid`, `PSex`, `PAge`, `PMStatus`, `PFname`, `PAddr`, `PDist`, `PState`, `OPDDate`, `dischargeStatus`, `admitOn`, `dischargeOn`, `CreatedOn`, `CreatedBy`) 
SELECT '1',o.OPDNo,o.RegNo,o.PatientId,o.PDep,'Kaya Chikitsa (Female)','1',o.pSymptom,'na',o.pname,o.PMob,o.uid,o.PSex,o. PAge,o.PMStatus,o.PFname,o.PAddr,o.PDist,o.PState,o.OPDDate,'0',b.Ward, b.`Bed No`,o.OPDDate,'$user' 
from `opd` as o join bed_table b on b.Ward = o.pward
where OPDDate=STR_TO_DATE('$curDate','%Y-%m-%d 00:00:00') AND PDep='Kaya Chikitsa' AND PSex=0 GROUP BY `OPDNo`  
ORDER BY RAND() LIMIT $ipdKayaChikitsaF" and b.Ward = 'Kaya Chikitsa (Female)' and b.status = '0';

由于您在 opd 表中没有关系字段,您可以使用简单的笛卡尔积来获取状态为 0 的病房 Kaya Chikitsa(女性)的确切值。此外,在上述查询中,之前忘记替换静态病房和床在选择中没有值查询 ie 'Kaya Chikitsa (Female)','1' with b.Ward,b. Bed No. 因此,您在结果中只得到了“1”的值。

    INSERT INTO `ipdKayaChikitsaF`(`IPDNo`, `OPDNo`, `RegNo`, `PatientId`, `PDep`, `PWard`, `PBed`, `pSymptom`, `PDisease`, `PName`, `PMob`, `uid`, `PSex`, `PAge`, `PMStatus`, `PFname`, `PAddr`, `PDist`, `PState`, `OPDDate`, `dischargeStatus`, `admitOn`, `dischargeOn`, `CreatedOn`, `CreatedBy`) 
    SELECT '1',o.OPDNo,o.RegNo,o.PatientId,o.PDep,b.Ward,b.`Bed No`,o.pSymptom,'na',o.pname,o.PMob,o.uid,o.PSex,o. PAge,o.PMStatus,o.PFname,o.PAddr,o.PDist,o.PState,o.OPDDate,'0',o.OPDDate,'0000-00-00',o.OPDDate,'$user' 
    from `opd` as o, (select Ward, `bed no` form bed_table where Status = 0 and Ward = 'Kaya Chikitsa (Female)' ) as b
    where OPDDate=STR_TO_DATE('$curDate','%Y-%m-%d 00:00:00') AND PDep='Kaya Chikitsa' AND PSex=0 GROUP BY `OPDNo`  
    ORDER BY RAND() LIMIT $ipdKayaChikitsaF" and b.Ward = 'Kaya Chikitsa (Female)' and b.status = '0';

推荐阅读