【问题标题】:How can I join data from different tables?如何连接来自不同表的数据?
【发布时间】:2021-12-03 17:07:18
【问题描述】:

问题

我使用 VBA,我想从 Oracle 数据库中导入所有可用于特定 employeeID 的数据。不幸的是,所需的数据包含在四个不同的表中。以w3schools-editor 为例,我对Shippers、Orders、Customers 和Products 表感兴趣:

Name: Shippers 
_____________
ShipperID | ShipperName | ...
_____________
Name: Orders
_____________
OrderID | EmployeeID |ShipperID ...
...
_____________
Name: OrderDetails
_____________
OrderID | ProductID | ...
...
_____________
Name: Products
_____________
ProductID | ProductName | ...
...
_____________

对于Orders中的特定EmployeeID,我希望得到一个表格的表格:

Name: Goal
_____________
ShipperName | ProductID | ProductName 
...
_____________

到目前为止我尝试了什么:

Select Shippers.ShipperName, Orders.OrderID, OrderDetails.ProductID 
From Orders
Inner Join OrderDetails On OrderDetails.OrderID = Orders.OrderID
Inner Join Shippers On Shippers.ShipperID = Orders.ShipperID 
Select Distinct Orders.OrderID, OrderDetails.ProductID 
From OrderDetails
Inner Join Orders On
Orders.OrderID = OrderDetails.OrderID And Orders.EmployeeID = 5

但在这两种情况下我都会出错。

我也试过用union

Select ShipperName From Shippers
    Inner Join Orders On Orders.ShipperID = Shippers.ShipperID
Union
Select ProductID From OrderDetails
    Inner Join Orders On Orders.OrderID = OrderDetails.OrderID

然后我得到一个表,其中一列包含原始两列中的条目。

我没有设法进一步接近Goal

有什么建议吗?

PS:我希望现在更清楚了。

【问题讨论】:

  • 请提供minimal reproducible example 和您实际工作和不工作的代码;您发布的代码中有非法且不一致的名称,因此我们甚至无法知道这是否与您实际运行的代码接近。
  • SQL UNION 而不是 JOINS 应该做你想做的事。

标签: sql vba oracle


【解决方案1】:

让我们看看这条sql语句是否对你有帮助:

SELECT Shippers.ShipperName, 
       Products.ProductID, 
       Products.ProductName
FROM Shippers
INNER JOIN Orders ON Shippers.ShipperID = Orders.ShipperID
INNER JOIN OrderDetails ON Orders.OrderID = OrderDetails.OrderID
INNER JOIN Products ON OrderDetails.ProductID = Products.ProductID

所以你可以添加 where 条件:

WHERE Orders.employeeID = ?

【讨论】:

  • 感谢帮助!我仍然不确定为什么我的原始陈述不起作用。但总有一天我可能会明白。
猜你喜欢
  • 2011-06-21
  • 2013-09-24
  • 2019-03-09
  • 2011-10-13
  • 1970-01-01
  • 2018-02-06
  • 1970-01-01
  • 2021-12-06
相关资源
最近更新 更多