Sql 检索具有重复外键的联接表的两个不同字段
我有一个重用外键的表,我想为每种情况加入不同的值。第一个表描述了药物剂量活动。它有指向毒品、路线、车辆等的ID。。。令人困惑的是,它重用了单元ID,它是单个描述表中的外键 分组(简化) 单位(简化) 我想生成一个查询,为所有组的每个药物剂量返回一行。除了单位,我什么都能做。我想使用CASE语句来显示剂量单位。select语句如下所示:Sql 检索具有重复外键的联接表的两个不同字段,sql,join,oracle10g,foreign-keys,Sql,Join,Oracle10g,Foreign Keys,我有一个重用外键的表,我想为每种情况加入不同的值。第一个表描述了药物剂量活动。它有指向毒品、路线、车辆等的ID。。。令人困惑的是,它重用了单元ID,它是单个描述表中的外键 分组(简化) 单位(简化) 我想生成一个查询,为所有组的每个药物剂量返回一行。除了单位,我什么都能做。我想使用CASE语句来显示剂量单位。select语句如下所示: 'DOSE UNITS' = CASE WHEN CHECK_UNIT IS NULL THEN DRUG_UNIT_DESCR ELSE CONCAT(DRUG
'DOSE UNITS' =
CASE
WHEN CHECK_UNIT IS NULL THEN DRUG_UNIT_DESCR
ELSE CONCAT(DRUG_UNIT_DESCR+'/'+CHECK_UNIT_DESCR)
END
我试图让结果看起来像这个例子:
结果
GROUP_NO DRUG DRUG_AMOUNT 'DOSE UNITS'
1 HelpsAlot 5 mg/kg
2 HelpsMore 1 mg/kg
2 HelpsAlot 5 mg/kg
3 DoesNothing 0.5 mL
4 WhoKnows 10 mL/kg
谢谢您的帮助。您需要两个连接,每个键一个:
select g.*,
'DOSE UNITS' = (CASE WHEN CHECK_UNIT IS NULL THEN du.UNIT_DESCR
ELSE CONCAT(du.UNIT_DESCR+'/'+cu.UNIT_DESCR)
END)
from groups g left outer join
units cu
on g.check_unit_id = cu.unit_id left outer join
units du
on g.drug_unit_id = du.unit_id
假设毒品单位总是有人居住
select group_no, drug, drug_amount,
'dose units' =
case
when check_unit is null then u1.unit_descr
else concat(u1.unit_descr+'/'+ u2.unit_descr)
end
from groups g inner join units u1
on g.drug_unit = u1.unit_id
left join units u2
on g.check_unit = u2.unit_id
组!!!我怎么能忘记团体!!!仍然是SQL的障碍。我要试一试。
select g.*,
'DOSE UNITS' = (CASE WHEN CHECK_UNIT IS NULL THEN du.UNIT_DESCR
ELSE CONCAT(du.UNIT_DESCR+'/'+cu.UNIT_DESCR)
END)
from groups g left outer join
units cu
on g.check_unit_id = cu.unit_id left outer join
units du
on g.drug_unit_id = du.unit_id
select group_no, drug, drug_amount,
'dose units' =
case
when check_unit is null then u1.unit_descr
else concat(u1.unit_descr+'/'+ u2.unit_descr)
end
from groups g inner join units u1
on g.drug_unit = u1.unit_id
left join units u2
on g.check_unit = u2.unit_id