在oracle sql中连接没有外键关系的表并向结果中添加列?

在oracle sql中连接没有外键关系的表并向结果中添加列?,sql,database,oracle,jointable,Sql,Database,Oracle,Jointable,在一个查询中,我连接了许多表,得到如下结果: ID ORDER_NUMBER PRICE === ============ ===== 01 21 100 02 22 300 03 23 400 04 24 900 05 25 100 现在,我需要从不同的表中添加1列ITEMNAME.NA

在一个查询中,我连接了许多表,得到如下结果:

ID   ORDER_NUMBER   PRICE    
===  ============   =====   
01    21            100        
02    22            300        
03    23            400    
04    24            900
05    25            100
现在,我需要从不同的表中添加1列ITEMNAME.NAME。表名为ITEMNAME。 以下是表ITEMNAME:

ID   PRICE      NAME 
===  ======  ============
20     100      Tablet    
50     300      PC
64     400      XBox
99     900      Laptop 
根据以上数据,我希望得到我的预期结果:

ID   ORDER_NUM   PRICE    NAME
==   =========   ======   ============
01      21       100      Tablet
02      22       300      PC 
03      23       400      XBox
04      24       900      Laptop
05      25       100      Tablet
注意:我们可以通过PRICE列联接ITEMNAME表的唯一方法

我的意思是,我想在ITEMNAME表中,在我的当前结果旁边显示与价格匹配的项目名称。请在我预期的最终结果中的ID 01和ID 05处注意这一点

或者,如果您有任何其他方法来实现它,请建议。
谢谢

说出表1中的选择ID、订单号和价格

ID订单号价格 === ============ ===== 01 21 100 02 22 300 03 23 400 04 24 900 05 25 100

select t1.ID, t1.Order_Number, t1.Price,(select ITEMNAME.NAME from ITEMNAME where ITEMNAME.PRICE = t1.Price) from Table1 t1

但是请注意,上面的代码可能会为您提供更多的记录。因此,您需要使用distinct或Rownum=1取决于您的需求。

如果您正在编写一个严肃的应用程序,那么您确实需要立即调整表设计。价格列不是可靠的联接列,至少有两个原因:

多个项目可能具有相同的价格。 当你决定改变物品的价格时会发生什么?

相反,考虑将ItMySid列添加到Orror表中,这将是ItMeNe.ID.< /P>上的外键。 然后,您的查询只需要在该外键关系上进行简单连接即可可靠地返回结果:

select o.id, o.order_number, o.price, i.name
  from orders o
  join itemname i
    on i.id = o.item_id
 order by o.id

一旦其中一个项目开始销售,您就有麻烦了。难道您不能根据已经必须引入itemname表的price列添加另一个联接,然后将其添加到结果中吗?