我写了这个观点:
CREATE VIEW productSalesYear AS
SELECT p.productName AS "Product Name", YEAR(o.orderDate) AS "Year", SUM(od.quantityOrdered * od.priceEach) AS "Sales Total"
FROM products p
JOIN orderdetails od ON p.productCode = od.productCode
JOIN orders o ON od.orderNumber = o.orderNumber
GROUP BY p.productName, YEAR(o.orderDate);
现在我需要查询productSalesYear视图以显示“2001 Ferrari Enzo”在2004年的每年销量。
SELECT *
FROM productSalesYear
WHERE p.productName = '2001 Ferrari Enzo' AND YEAR(o.orderDate) = 2004;
但是,这个查询不起作用,我无法返回任何结果。我做错了什么以及如何查询 VIEW?
SELECT *
FROM productSalesYear
WHERE "Product Name" = '2001 Ferrari Enzo' AND "Year" = 2004;
即使返回一个空集,上面的内容是否正确?
查询视图时,您只能通过为视图中的列定义的别名来引用视图返回的列。
您不能通过视图查询的表中的原始名称来引用列。您无法引用单个表名称或表别名(例如
p.*
或 o.*
)。