【问题标题】:how to work with Derived Tables如何使用派生表
【发布时间】:2011-10-11 19:55:01
【问题描述】:

我正在尝试理解派生表,我有点想法,但仍然搞砸了。我做了这个我认为不正确的代码。我不知道我是否输入错误或遗漏了什么。我正在使用的表是与客户表不同的公司名称,其中订单的折扣高于。2.我一直在查看它,也许我有一些名称倒序或什么的。

SELECT DISTINCT c.CompanyName
From Customers As c
Join
(Select OrderID
From Orders as o
Join [Order Details] as od
ON c.Customers = od.OrderID
Where od.OrderID = '<.2'

最后一部分与 2 配合得不太好

Northwind 数据库中的列是如何设置的,您单击表并向下查看 dbo.Order 详细信息并单击列,您将找到 OrderId、ProductID、UnitPrice、Quantity、Disounts。然后您将拥有包含 CustomerID、CompanyName、ContactName、ContactTitle、Address、City、Region、PostalCode、COuntry、Phone 和 Fax 的客户表。现在,如果您进入订单表,您将拥有 OrderID、CustomerID、EmployeeID、OrderDate、RequiredDate、ShippedDate、ShipVia、Frieght、ShipName、ShipAddress、ShipCity、ShipRegion、ShipPostalCode、ShipCountry。

【问题讨论】:

  • 我怀疑折扣值存储在od.OrderID 列中。该值是否还有另一列?
  • 订单详情中是的
  • sql 方言和功能因供应商而异。您应该更新您的问题以指明您正在使用的问题。
  • @st1984:那列名是……?
  • 看看你是否下到dbo.Order Detail并在它下面看你会看到折扣

标签: sql


【解决方案1】:

应该这样做。

SELECT c.CompanyName
    FROM Customers c
    WHERE EXISTS(SELECT NULL
                     FROM Orders o
                         INNER JOIN [Order Details] od
                             ON o.OrderID = od.OrderID
                                 AND od.Discount > .2
                     WHERE o.CustomerID = c.CustomerID)

【讨论】:

    猜你喜欢
    • 2017-11-25
    • 2020-05-23
    • 1970-01-01
    • 1970-01-01
    • 2011-12-08
    • 2010-10-29
    • 2011-11-23
    • 1970-01-01
    • 2021-02-22
    相关资源
    最近更新 更多