【问题标题】:MySQL distinct join with multiple rows nullMySQL distinct join 与多行 null
【发布时间】:2017-01-25 07:19:52
【问题描述】:

我在 MySQL 中有一个设计问题。我想使用视图来从多个表中获取记录。问题是某些表可以包含来自同一患者的多行数据,而其他行只有一个。为了说明这一点,这里有两个表格:bed_billinglab_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_idcsr_bill_id 列级别是唯一的。请提供您的预期结果,请勿提供示例数据的图片。
  • mysql 不等于 sq-server。这就是我删除标签的原因
  • @krishnpatel 我也试过了,但它仍然有重复。
  • @Viki888 当然。我会编辑它。谢谢

标签: mysql sql join


【解决方案1】:

尝试删除这个:

where 
     bed.patient_id = pat.patient_id

然后使用 distinct

【讨论】:

  • 我需要有患者 ID 才能选择所有相关数据。
  • 你试过了吗?
  • 是的,我做到了。还是一样。复制。我不明白的是,即使我使用 group by,它仍然重复
  • 尝试使用左连接而不是左外连接
  • 虽然没有真正改变。他们仍然重复
猜你喜欢
  • 1970-01-01
  • 2013-08-28
  • 1970-01-01
  • 2019-12-09
  • 2015-01-10
  • 2016-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多