sql - Oracle SQL 查询按不同表中的列值排序

标签 sql database oracle

我是 sql 的新手,正在为语句而苦苦挣扎。为简单起见,假设我有两个表 - 表 - JourneyOrder 和表 - ItemsToBuy。

JourneyOrder 包含城市列表、旅程中特定城市的索引以及谁正在旅行。 所以:

City   Index Name
London 1     John
Sydney 2     John
Paris  3     John
Berlin 1     Jack
Paris  2     Jack

另一个表包含要购买的元素列表,包含位置(如在城市)、需要购买元素的人员以及元素的不同特征。

Item   Location   Weight   Price   Responsible
Pencil London     1        2       John
Glue   London     2        5       John
Car    Paris      1000     12000   John
Wallet Paris      3        20      Jack

我想选择一个特定的人需要购买的所有元素并按地点订购。因此,如果约翰的第一条路线是伦敦,我希望首先显示您可以在伦敦购买的商品。

目前,我可以使用以下内容:

SELECT itb.item, itb.location, itb.price
FROM ItemsToBuy itb,
WHERE itb.responsible = 'John'
ORDER BY CASE
WHEN itb.location = 'London' THEN '1' 
WHEN itb.location = 'Sydney' THEN '2' 
WHEN itb.location = 'Paris'  THEN '3' 

现在这显然很糟糕,因为我需要根据每个负责人所经历的旅程按部分“硬编码”订单,我怎样才能做到这一点才能将项目表的位置与旅程表中的城市相匹配并使用索引当这些匹配时从旅程表中。

最佳答案

我想你只是想要一个join:

SELECT itb.item, itb.location, itb.price
FROM ItemsToBuy itb JOIN
     JourneyOrder jo
     ON itb.name = jo.name AND itb.location = jo.city
WHERE itb.responsible = 'John'
ORDER BY jo.index;

关于sql - Oracle SQL 查询按不同表中的列值排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48808318/

相关文章:

mysql - SQL 完全外连接或联合

java - 如何在java中的单例类中为两个不同的数据源创建连接

java - 在 android 中使用 ORMLite 保存一个集合类

sql - Oracle中如何忽略字符串末尾的空值?

mysql - INSERT ... ON DUPLICATE UPDATE - 锁定等待超时

mysql - 使用Mysql事务的优势

Oracle 从具有多行和多列的 Dual 中选择

java - hibernate和oracle的批量插入模式: seems to be dropping back to slow mode silently

Oracle 序列 - 跳过的数字

sql - 如何在SQL Server 2005/8上获取类表查询结果?