【问题标题】:How to create a view including the following tables?如何创建包含以下表格的视图?
【发布时间】:2018-06-10 13:00:51
【问题描述】:

我有以下2 tables involved,我正在尝试create a view popularProducts,其中sum of each product's quantityOrdered 等于或高于100。

我尝试了以下方法,但对我来说并不完全正确:

SELECT productCode, productName, buyPrice, image FROM products JOIN orderDetails on products.productCode=orderDetails.products_productCode WHERE (SELECT SUM(quantityOrdered) >= 100);

OrderDetails表:

CREATE TABLE `orderDetails` (
  `products_productCode` bigint(20) UNSIGNED NOT NULL,
  `orders_orderNumber` bigint(20) UNSIGNED NOT NULL,
  `quantityOrdered` varchar(45) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

还有products表:

CREATE TABLE `products` (
  `productCode` bigint(20) UNSIGNED NOT NULL,
  `productName` varchar(45) DEFAULT NULL,
  `productDescription` text,
  `quantityInStock` smallint(5) UNSIGNED DEFAULT NULL,
  `buyPrice` decimal(7,2) UNSIGNED DEFAULT NULL,
  `image` varchar(45) DEFAULT NULL
) E

【问题讨论】:

    标签: mysql join view sum


    【解决方案1】:

    您需要 group by 和有订购数量总和的子句

    CREATE VIEW viewName AS
    SELECT p.productCode, p.productName, p.buyPrice, p.image 
    FROM products p
    JOIN orderDetails o on p.productCode=o.products_productCode 
    GROUP BY p.productCode, p.productName, p.buyPrice, p.image 
    HAVING SUM(o.quantityOrdered) >= 100
    

    【讨论】:

    • 我需要GROUP BY all the columns吗? GROUP BY 只是 one columnproductName 这样还不够吗?
    • @codeDragon 根据新版本是的,您需要选择列表中的所有列,请参阅此处了解更多信息12.19.3 MySQL Handling of GROUP BY
    • 您不需要将pc 命名为实例的别名:CREATE VIEW viewName AS SELECT p.productCode, p.productName, p.buyPrice, p.image FROM products AS p JOIN orderDetails AS o on p.productCode=o.products_productCode GROUP BY p.productCode, p.productName, p.buyPrice, p.image HAVING SUM(o.quantityOrdered) >= 100;
    • @codeDragon 我没明白你的意思,你能详细说明一下吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-29
    • 2011-02-26
    相关资源
    最近更新 更多