字段列表中的未知列名称 - MySQL

时间:2016-02-03 19:02:14

标签: mysql views mysql-error-1054

在我看来,这真的是一个简单的修复,但我无法弄清楚。这是我正在研究的问题:

  1. 创建一个名为order_item_products的视图,该视图返回Orders,Order_Items和Products表中的列。 此视图应从Orders表返回这些列:order_id,order_date,tax_amount和ship_date。 此视图应从Order_Items表返回这些列:item_price,discount_amount,final_price(从项目价格中减去的折扣金额),数量和item_total(项目的计算总计)。 此视图应从Products表
  2. 返回product_name列

    这是我的代码:

        CREATE VIEW order_item_products AS
         SELECT o.order_id, o.order_date, o.tax_amount, o.ship_date,
                     oi.item_price, oi.discount_amount,  oi.quantity, 
                 (oi.item_price - oi.discount_amount) AS actual_price,
        (actual_price * oi.quantity) AS final_price,
                  p.product_name
    FROM orders o 
        JOIN order_items oi on o.order_id = oi.order_id
        JOIN products p ON p.product_id = oi.product_ID;
    

    我在字段列表中收到错误消息Unknown column“actual_price”。我究竟做错了什么?它不会计算最终价格。我删除了最终的价格声明并执行了我的查询,因此它允许它成为一个列。

    感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

您尝试在实际存在之前使用别名。我认为这应该有效:

CREATE VIEW order_item_products AS
    SELECT
        o.order_id,
        o.order_date,
        o.tax_amount,
        o.ship_date,
        oi.item_price,
        oi.discount_amount,
        oi.quantity, 
        (oi.item_price - oi.discount_amount) AS actual_price,
        ((oi.item_price - oi.discount_amount) * oi.quantity) AS final_price,
        p.product_name
    FROM orders AS o 
    JOIN order_items AS oi
        ON o.order_id = oi.order_id
    JOIN products AS p
        ON p.product_id = oi.product_ID
;

答案 1 :(得分:0)

我的版本似乎有效:

CREATE or REPLACE view order_item_product
AS SELECT o.order_id,o.order_date,o.tax_amount,o.ship_date,
oi.item_price,oi.discount_amount,oi.item_price-oi.discount_amount AS final_price,oi.quantity,COUNT(oi.item_id) AS item_total,
p.product_name
FROM orders o,orderitems oi,product p
WHERE o.order_id=oi.order_id
AND p. product_id=oi. product_id;