2014-12-02 34 views
0

我有3张桌子。如何在select语句中获得计算列?

一个是PRODUCT表,它具有unitSalePrice和其他表是ORDERPRODUCT,它有一个列productQuantity(从特定的产品太多秩序如何),也ORDERS增加的客户的订单细节。

我写了一个SELECT声明是这样的:

SELECT 
    ORDERPRICE 
FROM 
    PRODUCT, ORDERPRODUCT, ORDERS 
WHERE 
    ORDERPRODUCT.PRODUCT_ID = PRODUCT.PRODUCT_ID 
    AND ORDERS.ORDER_ID = ORDERPRODUCT.ORDER_ID 
    AND ORDERPRICE AS (ORDERPRODUCT.PRODUCTQTY * PRODUCT.UNITSALEPRICE) ; 

但这ORDERPRICE列不在这3个表,它是虚拟列。

当我运行这个查询时,它给出错误列不存在。

我该怎么做?

+0

[不良习惯踢:使用旧式联接(http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/ 08/bad-habits-to-kick-using-old-style-joins.aspx) - 旧式*逗号分隔的表*样式列表被替换为ANSI中的适当* ANSI'JOIN'语法 - ** 92 ** SQL标准(**超过20年**前),其使用不鼓励 – 2014-12-02 05:54:23

回答

1

你应该学会使用明确join语法:

SELECT (op.PRODUCTQTY * p.UNITSALEPRICE) AS ORDERPRICE 
FROM PRODUCT p JOIN 
    ORDERPRODUCT op 
    ON op.PRODUCT_ID = p.PRODUCT_ID JOIN 
    ORDERS o 
    ON o.ORDER_ID = op.ORDER_ID; 
+0

谢谢。它对我有用。 – NoughT 2014-12-02 05:09:06