Oracle SQL使用列作为查询,然后在原始列上显示结果

Oracle SQL使用列作为查询,然后在原始列上显示结果,sql,oracle,oracle11g,Sql,Oracle,Oracle11g,我有两张桌子 第一个名为DATA的表如下所示: DATE NAME DESCRIPTION 5/2 5 Orange Juice 5/4 2 Apple Juice 5/5 1 Cranberry Juice 5/6 1 Lemon Juice NAME_ID NAME 5 Bob 4 Frank 3 Megan 2 Tim

我有两张桌子

第一个名为DATA的表如下所示:

DATE    NAME     DESCRIPTION
5/2     5        Orange Juice
5/4     2        Apple Juice
5/5     1        Cranberry Juice
5/6     1        Lemon Juice 
NAME_ID   NAME
5         Bob
4         Frank
3         Megan
2         Tim
1         Brian
第二个表名为NAMES,如下所示:

DATE    NAME     DESCRIPTION
5/2     5        Orange Juice
5/4     2        Apple Juice
5/5     1        Cranberry Juice
5/6     1        Lemon Juice 
NAME_ID   NAME
5         Bob
4         Frank
3         Megan
2         Tim
1         Brian
我想,从数据表中查询所有列,并在名称列上执行查找,让它获取该数字,在名称表中查找该数字,并在数据表中替换该数据,名称列,这样我会得到如下结果:

DATE    NAME     DESCRIPTION
5/2     Bob       Orange Juice
5/4     Tim       Apple Juice
5/5     Brian     Cranberry Juice
5/6     Brian     Lemon Juice

我是一个彻头彻尾的SQL noob,所以到目前为止,我的尝试都是用谷歌搜索,我一直在寻找子查询,但这似乎并不能解决问题。

不,你不需要子查询,但你确实需要连接。第1-10行的样本数据;执行作业的查询从第12行开始。我猜“date”列实际上是
date
datatype,但为了简单起见,我将其保留为字符串

SQL> with
  2  -- sample data
  3  data (datum, name, description) as
  4    (select '5/2', 5, 'Orange Juice' from dual union all
  5     select '5/4', 2, 'Apple Juice'  from dual
  6    ),
  7  names (name_id, name) as
  8    (select 5, 'Bob' from dual union all
  9     select 2, 'Tim' from dual
 10    )
 11  -- query you probably need
 12  select d.datum,
 13    n.name,
 14    d.description
 15  from data d join names n on n.name_id = d.name
 16  order by d.datum;

DATUM NAME  DESCRIPTION
----- ----- ------------
5/2   Bob   Orange Juice
5/4   Tim   Apple Juice

SQL>

提示:
加入
。这通常是学习SQL时首先要学习的内容之一。