在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列添加另一个联接,然后将其添加到结果中吗?