繁体   English   中英

一对多关系中多表的不同计数

[英]Distinct Count from a Many Table in a One-To-Many Relationship

我是 SQL 的新手,所以如果这个查询是基本的,我深表歉意。

我有一个患者 data.table,它具有单独出现的字段,即 chart_number、Name,具有唯一标识符 zzabstractlink。 我有另一个程序表,每位患者最多可能有 20 个长格式数据。

我还链接到另一个多次出现的表,诊断,所以我应该创建 3 个不同的数据集,其中包含所有字段和派生字段(如上面的剖腹产),然后通过 union 语句将它们链接在一起吗? 还是任何程序的解决方案都适用于诊断?

非常感谢所有帮助,谢谢。

注意:对于所提供的代码,这从干预表中提取了一个案例,以获得与干预一样多的记录,而不仅仅是一次,这正是我想要的。

S.

病人表

zz抽象链接 名称 病人服务 录取日期 disch_date
111111 史密斯,约翰 30 2021-09-01 2021-09-05
222222 琼斯,弗兰克 30 2021-10-01 2021-10-15
333333 格林,乔尼 55 2021-11-01 2021-11-10
444444 布莱克,米兹 51 2021-12-01 2021-12-03
555555 卡梅伦,莎莉 10 2022-01-01 2022-05-05

程序表

zz抽象链接 Px发生 Px代码
111111 1个 INV89DA
111111 2个 ITA35HAJ2
111111 3个 ITA80DA
222222 1个 IAN27JA
222222 2个 1BM72LA
222222 3个 1FR89WJAK
333333 1个 1RM89LA
333333 2个 1RF89LA
444444 1个 5MD60AA

诊断表

zz抽象链接 Dx发生 Dx代码
111111 1个 K711
111111 2个 R458
222222 1个 K358
222222 2个 I651
333333 1个 N811
333333 2个 N816
444444 1个 O70101
444444 2个 Z3700
555555 1个 I500
555555 2个 E785
555555 3个 R64

[期望的结果]

zz抽象链接 cs(来自 px 的派生字段) prev_cs(来自 dx 的派生字段)
111111 0 0
222222 0 0
333333 0 0
444444 1个 1个
555555 0 0

我不明白你是如何获得 prev_cs 值的。 但是对于 cs 值,您需要一个EXISTSIN子句:

select
  zzabstractlink,
  zzabstractlink in (select zzabstractlink from procedures where pxcode like '5MD60%')
    as cs
from patients
order by zzabstractlink; 

在 MySQL 中,true = 1,false = 0。因此,如果找到匹配行, INEXISTS子句将为 1,否则为 0。

演示: https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=00501fd3d98f63a35ad2c4cb527c7f8e

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM