从多个表创建一个没有相似列的视图

时间:2015-07-13 00:31:19

标签: sql tsql

我正在做一个家庭作业问题而且很难过。这是一个问题:

  1. 创建一个名为 OrderItemProducts 的视图,该视图返回Orders,OrderItems和Products表中的列。 此视图应从Orders表返回这些列:OrderID,OrderDate,TaxAmount和ShipDate。 此视图应从OrderItems表返回这些列:ItemPrice,DiscountAmount,FinalPrice(从项目价格中减去的折扣金额),Quantity和ItemTotal(项目的计算总计)。 该视图应返回Products表中的ProductName列。
  2. 以下是我的内容,我收到的错误是'无效的列名FinalPrice'

    USE th0664920
    GO
    CREATE VIEW Order_Item_Products
    AS
    SELECT o.OrderID, o.OrderDate, o.TaxAmount, o.ShipDate, p.ProductName
    FROM Orders AS o, Products AS p
    GO
    SELECT ItemPrice, DiscountAmount, (ItemPrice - DiscountAmount) AS
    FinalPrice, Quantity, (FinalPrice + TaxAmount) AS ItemTotal
    FROM OrderItems, Orders;
    

    我不希望任何人为我写这篇文章,但我希望得到帮助,以了解我做错了什么来得到这个错误。提前谢谢

2 个答案:

答案 0 :(得分:0)

一些问题

在第一个上 使用连接而不是表,表语法
需要有一个连接条件(on) - 很可能是productID

on the second
不确定

视图应该是单个查询

答案 1 :(得分:0)

你的查询有很多问题,但是你自己承认,你刚刚开始。您获得的具体错误是因为您使用的数据库引擎不允许您按照您尝试的方式在select子句中使用别名。具体来说,你有这个:

SELECT ItemPrice
, DiscountAmount
, (ItemPrice - DiscountAmount) AS FinalPrice
, Quantity
, (FinalPrice + TaxAmount) AS ItemTotal

FinalPrice是别名,而不是列。大多数数据库引擎都会抛出错误,正如您使用的那样。你必须重复计算。换句话说,这个:

, (FinalPrice + TaxAmount) AS ItemTotal

一定是这个

, (ItemPrice -DiscountAmount + TaxAmount) AS ItemTotal