我通过 SQL+ 命令行使用 Oracle,我试图显示来自两个不同表的数据,但我需要使用第三个表来确定要显示的内容。下面是我的示例 3 表的图像。
Stack 不允许我在问题中显示我的图像,所以这里有一个链接:
我想为每个订单显示“名称”、“O_ID”和“日期”。我对 SQL 很陌生,这可能以前已经回答过,但我找不到。
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;
您尝试做的是一种非常常见的做法,需要 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 个日期,一个订单的日期不多。引入另一个表来简单地存储日期允许可能有许多日期与订单相关联,这简直是不自然的。
做一个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