首页 > 解决方案 > 我可以在普通表的左外连接中使用 SQL 视图吗?

问题描述

这是我的看法

CREATE OR REPLACE VIEW w AS SELECT
orp1.order_product_id,
orp1.order_id,
pov1.weight,
sum(orp1.quantity) AS 'quantity'
FROM
`order_product` orp1,
`order_option` oro1,
`product_option_value` pov1
WHERE
pov1.option_id = 6 AND oro1.product_option_value_id = pov1.product_option_value_id AND orp1.order_product_id = oro1.order_product_id
GROUP BY
orp1.order_product_id,
orp1.order_id,
pov1.weight;

这是查询部分

FROM 
    `order_product` orp6,
    `product` p,
    `product_description` pd,
    `product_to_category` p2c
LEFT OUTER JOIN w ON orp6.order_id = w.order_id AND orp6.order_product_id = w.order_product_id

但显示的错误是:

orp6.order_id 是未知列

标签: mysqlsqljoinsql-view

解决方案


切勿FROM子句中使用逗号。 始终使用正确、明确、标准 JOIN的语法。在这

CREATE OR REPLACE VIEW w AS
    SELECT orp1.order_product_id, orp1.order_id, pov1.weight,
            sum(orp1.quantity) AS 'quantity'
    FROM `order_product` orp1 JOIN
         `order_option` oro1
         ON orp1.order_product_id = oro1.order_product_id JOIN
         `product_option_value` pov1
         ON oro1.product_option_value_id = pov1.product_option_value_id
    WHERE pov1.option_id = 6 
    GROUP BY orp1.order_product_id, orp1.order_id, pov1.weight;

然后,您可以在子句中添加其他JOINs FROM,例如您要添加的那个。


推荐阅读