在一个查询中,我正在加入许多表,并得到如下结果:
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。
或者,如果您有任何其他方法可以实现它,请建议。 感谢
答案 0 :(得分:3)
如果您正在撰写认真的应用程序,那么您真的需要立即对您的桌面设计进行调整。 price
列不是可靠的连接列,至少有两个原因:
item
可以拥有相同的price
。item
相反,请考虑在item_id
表中添加orders
列,该列将是itemname.id
上的外键。
然后,您的查询只需要在该外键关系上进行简单连接即可可靠地返回结果:
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
答案 1 :(得分:2)
说出选择ID,Order_Number,来自Table1的价格
ID ORDER_NUMBER价格
=== ============ =====
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取决于你的要求。