【发布时间】:2017-01-25 07:19:52
【问题描述】:
我在 MySQL 中有一个设计问题。我想使用视图来从多个表中获取记录。问题是某些表可以包含来自同一患者的多行数据,而其他行只有一个。为了说明这一点,这里有两个表格:bed_billing 和 lab_billing
注意 Patient_id 字段。一个病人的两个记录,因为这是正常的。现在当涉及到连接时,所有这些字段都会重复。那就是问题所在。我试过按他们分组,但无济于事。 这是我的视图语法的查询:
create view billed AS
select
bed.bed_bill_id,
csr.csr_bill_id,
lab.lab_bill_id,
pharm.pharm_bill_id,
rad.rad_bill_id,
phys.attending_id,
bed.price AS bed_price,
csr.price AS csr_price,
lab.price as lab_price,
pharm.price as pharm_price,
rad.price as rad_price,
pat.patient_id AS Pid
from
patient pat
left outer join bed_billing bed
on bed.patient_id = pat.patient_id
left outer join csr_billing csr
on csr.patient_id = pat.patient_id
left outer join lab_billing lab
on lab.patient_id = pat.patient_id
left outer join pharm_billing pharm
on pharm.patient_id = pat.patient_id
join rad_billing rad
on rad.patient_id = pat.patient_id
left outer join attending_physician phys
on phys.patient_id = pat.patient_id
where
bed.patient_id = pat.patient_id
它们在所有行中都有重复。我应该只创建一个事务表,以便将所有数据存储在其中还是通过视图推送?我的主要假设是 MySQL 会填充行以便用多个记录行填充它。
所需的输出应该是所有 id 都是不同的并且不重复。但是当我尝试在查询中加入 distinct 时,它也会重复。
想要的输出:
【问题讨论】:
-
按 bed_bill_id 使用分组
-
我没有看到任何重复。列
lab_bill_id在csr_bill_id列级别是唯一的。请提供您的预期结果,请勿提供示例数据的图片。 -
mysql 不等于 sq-server。这就是我删除标签的原因
-
@krishnpatel 我也试过了,但它仍然有重复。
-
@Viki888 当然。我会编辑它。谢谢