2017-12-30 39 views
1

私は2 tables involved次、私はsum of each product's quantityOrderedが等しいか、私は次のことを試してみましたが、かなり私には、右に見えるdoes't 次の表を含むビューを作成するにはどうすればよいですか?

100を超えている create a view popularProducts、しようとしています:

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 

答えて

1

あなたがして、グループを必要と数量の合計のための句を有する

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 
+0

を命じた私は 'すべてcolumns' BY GROUPが必要ですか?例えば ​​'productName'のように' GROUP BY'だけでは 'one column'では十分ではありませんか? – codeDragon

+0

@codeDragon新しいリリースによると、選択リストにあるすべての列が必要です。詳細はこちら[12.19.3 GROUP BYのMySQL処理](https://dev.mysql.com/doc/refman/5.7/en /group-by-handling.html) –

+0

intのエイリアスとして 'p'と' c'を指定する必要はありません: 'CREATE VIEW viewName AS SELECT p.productCode、p.productName、p.buyPrice、 P AS Productsからp.image はHAVING SUM(o.quantityOrdered)> = 100 p.productCode、p.productName、p.buyPrice、p.image BY = o.products_productCode GROUP p.productCodeにOなどたOrderDetailsをJOIN ; ' – codeDragon

関連する問題