0

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

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

在此处输入图像描述

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

4

3 回答 3

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;
于 2013-04-09T14:43:13.173 回答
1

您尝试做的是一种非常常见的做法,需要 INNER JOIN。从设计的角度来看,Order 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 个日期,一个订单的日期不多。引入另一个表来简单地存储日期允许可能有许多日期与订单相关联,这简直是不自然的。

于 2013-04-09T14:44:03.873 回答
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

文档:http ://www.w3schools.com/sql/sql_join.asp

于 2013-04-09T14:44:48.693 回答