【问题标题】:Write complex SQL query to join five more table under given condition?在给定条件下编写复杂的 SQL 查询以连接另外五个表?
【发布时间】:2018-09-10 03:44:35
【问题描述】:

这是我的餐桌设计:

我像这样对单独的 DrugPackage 表编写查询,它工作正常并给了我 16 条记录。

Select  
    packText, ifnPriceAup
from 
    med.DrugPackage 
where 
    latest = '1' and available = '1' and baseDrug = '5102';

但我需要获取,相关 BaseDrug 表 -> 名称以及药物表 -> 名称以及 TradName 表 -> neme。我尝试了很多时间使用表连接,但我没有成功。

我写这个查询,但输出看起来不正确。

Select 
    brandedDrug.tradeName, basebrandedDrug.name, basebrandedDrug.id, 
    baseDrug.name, packText, ifnPriceAup 
from 
    med.DrugPackage  
left join 
    med.BaseDrug as baseDrug on med.DrugPackage.baseDrug = baseDrug.id  
left join 
    med.BaseBrandedDrug as basebrandedDrug on med.DrugPackage.brandedDrug = basebrandedDrug.id
left join 
    med.BrandedDrug as brandedDrug on  med.DrugPackage.baseDrug = brandedDrug.id 
where 
    med.DrugPackage.latest = '1' 
    and available = '1' 
    and baseDrug = '5102';

输出:

最后三列记录正确,但前两列不正确。而且,我想打印商品名而不是 ID。

【问题讨论】:

    标签: sql join database-design


    【解决方案1】:

    试试这个。

    当您使用连接时,使用相同的数据类型和相关列进行连接

    Select brandedDrug.tradeName ,basebrandedDrug.name,
    basebrandedDrug.id, baseDrug.name , packText, ifnPriceAup 
    from med.DrugPackage  
    left join med.BaseDrug as baseDrug on med.DrugPackage.id = baseDrug.id  
    left join med.BaseBrandedDrug as basebrandedDrug 
    on med.DrugPackage.id = basebrandedDrug.id
    left join med.BrandedDrug as brandedDrug 
    on  med.DrugPackage.id = brandedDrug.nplid 
     where med.DrugPackage.latest = '1' 
    and available ='1' and baseDrug ='5102'; 
    

    【讨论】:

    • 在 Brandeddrug 检查 id 名称并正确使用它。我对 NPLID 还是 NPIID 感到困惑
    猜你喜欢
    • 2016-01-16
    • 2023-04-10
    • 2023-03-05
    • 2012-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-02
    相关资源
    最近更新 更多