2011-10-11 48 views
1

我想了解派生表我有点想法,但仍然搞乱它。我做了这个我认为不对的代码。我不知道我是否有输入错误或遗漏了某些东西。我正在使用的表格是客户表格中的一个独特的公司名称,订单的折扣比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' 

最后的部分,与the.2

列是如何设置Northwind数据库您点击表格和下井看到dbo.Order方式并点击工作这么好您可以找到OrderId,ProductID,UnitPrice,Quantity,Disounts。然后,您将拥有包含CustomerID,CompanyName,ContactName,ContactTitle,Address,City,Region,PostalCode,COUNtry,Phone和Fax的Custumers表。现在,如果您进入订单表下,您将拥有订单ID,客户ID,雇员ID,订单日期,所需日期,交货日期,ShipVia,Frieght,出货单,出货地址,出货量,出货区域,出货邮编,出货国家。

+0

我怀疑折扣价值存储在'od.OrderID'列中。有价值的另一列吗? –

+0

是订单详细信息 – st1984

+0

从一个供应商到另一个供应商,sql方言和功能差别很大。你应该更新你的问题,以表明你正在使用哪一个。 – gview

回答

0

这样的事情应该这样做。

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)