【问题标题】:creating a view from multiple tables with no like columns从没有相似列的多个表创建视图
【发布时间】:2015-07-13 00:31:19
【问题描述】:

我正在处理一个家庭作业问题,我很难过。问题来了:

  1. 创建一个名为 OrderItemProducts 的视图,该视图返回 Orders、OrderItems 和 Products 表中的列。 此视图应从 Orders 表返回以下列:OrderID、OrderDate、TaxAmount 和 ShipDate。 此视图应从 OrderItems 表返回以下列:ItemPrice、DiscountAmount、FinalPrice(从项目价格中减去的折扣金额)、Quantity 和 ItemTotal(计算出的项目总计)。 此视图应返回 Products 表中的 ProductName 列。

这是我所拥有的,我得到的错误是 'Invalid column name 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;

我不想让任何人为我写这篇文章,但我需要帮助来了解我做错了什么才能得到那个错误。提前谢谢你

【问题讨论】:

  • 您需要加入表格(可能在订单 ID 和产品 ID 上)。然后只在视图中选择你需要的列
  • 在用于此视图的三个表中没有相同的列。这部分让我感到困惑。 :(
  • 顺便感谢您的编辑! :) 你是怎么弄成这样的?
  • 发布您的表架构。但我猜你有 productID 加入 products.id ?或类似的。
  • 你可以通过在每行代码前放置 4 个空格来使其看起来像这样。

标签: sql tsql


【解决方案1】:

几个问题

第一个
使用非表连接,表语法
需要有一个连接条件(打开) - 很可能是 productID

第二次
不确定

视图应该是单个查询

【讨论】:

    【解决方案2】:

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

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

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

    , (FinalPrice + TaxAmount) AS ItemTotal
    

    一定是这个

    , (ItemPrice -DiscountAmount + TaxAmount) AS ItemTotal
    

    【讨论】:

    • 如果我为 FinalPrice 计算会不会抛出错误?我应该都返回
    • 我可以使用 SELECT INTO 将我需要的所有列放入 3 个表之一吗?
    猜你喜欢
    • 1970-01-01
    • 2012-12-13
    • 2020-09-21
    • 2015-07-30
    • 1970-01-01
    • 2013-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多