从2个表中选择基于另一个表的数据

时间:2013-04-09 14:39:27

标签: sql oracle select join

我通过SQL +命令行使用Oracle,我正在尝试显示来自两个不同表的数据,但我需要使用第三个表来确定要显示的内容。下面是我的样本3表的图像。

Stack不会让我在问题中显示我的图像,所以这里有一个链接:

enter image description here

我想为每个订单显示“名称”,“O_ID”和“日期”。我对SQL很陌生,之前可能已经回答过,但我找不到它。

3 个答案:

答案 0 :(得分:3)

JOIN表:

SELECT
  c.Name,
  o.O_ID,
  od.Date
FROM Customer AS c
INNER JOIN "Order"   AS o  ON c.C_ID = o.C_ID
INNER JOIN OrderDate AS od ON o.O_ID = od.O_ID;

答案 1 :(得分:1)

您尝试做的是一种非常常见的做法,需要内部加入。 从设计角度来看,订单日期表甚至不应该存在。 date列应该位于Order表中。我根据该设计编写了查询:

SELECT 
       o.O_ID,
       o.Date,
       c.Name,


FROM
      customer AS c
      INNER JOIN order AS o ON c.C_ID = o.C_ID

修改

有关您的设计问题的更多信息:数据的自然顺序是订单有1个日期,订单的日期不多。引入另一个表来简单地存储日期允许可能存在与订单相关的许多日期,这简直不自然。

答案 2 :(得分:0)

执行JOIN

select c.Name, o.O_ID, od.Date 
from Customer c
inner join Order o on o.O_ID = c.C_ID
inner join OrderDate od on o.O_ID = od_ID

Doc:http://www.w3schools.com/sql/sql_join.asp