You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求编写符合条件的多表关联SQL查询,关联DrugPackage等表获取指定字段

正确的多表关联SQL写法方案

首先,要实现多表关联查询,核心是找准表与表之间的关联主键/外键。根据你提供的原查询语句,我先基于医药系统表的常见关联逻辑做合理假设(如果你的实际关联字段不同,直接替换即可):

假设的表关联关系:

  • med.DrugPackage 表通过 baseDrug 字段关联 BaseDrug 表的主键(比如 id)
  • med.DrugPackage 表通过某个药物ID字段(比如 drugId)关联 Drug 表的主键
  • med.DrugPackage 表通过某个商品名ID字段(比如 tradNameId)关联 TradName 表的主键

基于原查询的多表关联SQL(保留原16条结果的前提下)

如果你希望原查询的16条记录都能被返回(哪怕关联的表中没有对应数据也保留),推荐用 LEFT JOIN;如果只需要关联成功的记录,用 INNER JOIN 即可。

SELECT 
    dp.packText, 
    dp.ifnPriceAup,
    bd.name AS base_drug_name,
    d.name AS drug_name,
    tn.name AS trad_name
FROM med.DrugPackage dp
LEFT JOIN BaseDrug bd ON dp.baseDrug = bd.id -- 替换为BaseDrug表实际的主键字段
LEFT JOIN Drug d ON dp.drugId = d.id -- 替换为DrugPackage中关联Drug的实际字段、Drug表主键
LEFT JOIN TradName tn ON dp.tradNameId = tn.id -- 同理替换为实际关联字段
WHERE dp.latest = '1' 
  AND dp.available = '1' 
  AND dp.baseDrug = '5102';

关键说明:

  • 表别名的使用:给每个表起别名(比如dp代表DrugPackage),能让SQL更简洁易读
  • 关联条件的正确性:一定要替换上面注释里的关联字段为你的实际表结构字段——比如如果DrugPackage和Drug是通过drugCode而不是id关联,就把dp.drugId = d.id改成dp.drugCode = d.drugCode
  • 字段重命名:用AS给不同表的name字段起不同的别名,避免结果集中字段名重复混乱

如果你的表之间的关联逻辑不是上面假设的(比如BaseDrug和Drug先关联,再和DrugPackage关联),可以补充更详细的表结构信息,我再帮你调整!

内容的提问来源于stack exchange,提问作者uma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:23:48