mysql - 从不同的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 列。
解决方案
在选择查询中使用连接。注意表 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';
推荐阅读
- android - Android Room Relation 返回无效列表
- html - 如何使用html将自定义单词放入输入文件元素中
- python - 整数 NxN 矩阵的精确行列式
- python - 开发一个模块来帮助用python生成彩票
- postgresql - 由于错误引发的 SQL 异常(sql 代码)(sqlState 42883):操作符不存在:字符变化 + 未知
- python - 无法分配“OrderedDict()...:“...”必须是“...”实例
- android - 如何在 onBindViewHolder 中获取 RecyclerView 单元格的高度/宽度?
- java - 从线程池线程调用api时如何测量api的响应时间。(java spring boot)
- angular - 无法从 Mac 卸载 CLI
- javascript - 如何在 JavaScript 中创建 RTMP 视频编码器