2016-02-03 6 views
0

Мне кажется, что это действительно простое исправление, но я не могу понять это. Вот вопрос, над которым я работаю:Неизвестное имя столбца в списке полей - MySQL

  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 (расчетная сумма для элемента). Этот вид должен вернуть колонку корпуса PRODUCT_NAME из таблицы Products

И вот мой код:

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; 

Я получаю сообщение об ошибке Неизвестный столбец «actual_price» в списке полей. Что я делаю не так? Он не рассчитает окончательную цену. Я удалил итоговый оператор цены и выполнил мой запрос, чтобы он стал столбцом.

Любая помощь приветствуется.

+1

вы не можете использовать псевдоним в то же время, вы определяете его. поэтому '(actual_price * oi_quantity)' должно быть '((oi.item_price - oi.discount_amount) * oi.quantity)' –

+0

Спасибо! Я знал, что это просто. – Itsonlyme

ответ

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 
; 
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; 

 Смежные вопросы

  • Нет связанных вопросов^_^