oracle使用left join的查询

table1
name dw1 dw2
白菜 1 2

table2(单位字典表)
name code
斤 1
颗 2

现在我想要写查询语句,查出物品的单位1和单位2,我用left Join 通过table1的dw1 与 table2的code关联,再用left Join 通过table1的dw2 与 table2的code关联,目前我的方法是关联两次table2的表,分别取到dw1和dw2的中文名称,想问下有什么方法能一次关联都取到吗

本来就是要获取两个字段,而且是提取不同行的数据,当然要关联两次,要么join,要么标量子查询

select t.name,a.name,b.name 
from table1 t,table2 a,table2 b
where t.dw1=a.code and t.dw2=b.code

标量子查询的上面那位已经给了。
但是,的确是有办法只关联一次table2的,但是效率也不见得会高

从关系模型上看,你的维表table2包含了事实表table1的两个属性,而且这两个属性的关系并列的~~所以从数据结构上看,肯定是得单独处理的。

SELECT name
, ( SELECT name FROM table2 b WHERE a.dw1 = b.code ) dw1
, ( SELECT name FROM table2 c WHERE a.dw2 = c.code ) dw2
FROM table1;