Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 具有MAX()的查询无法按预期工作_Mysql_Sql_Having Clause - Fatal编程技术网

Mysql 具有MAX()的查询无法按预期工作

Mysql 具有MAX()的查询无法按预期工作,mysql,sql,having-clause,Mysql,Sql,Having Clause,我在一个数据库中有四个表。表如下所示: Cashier(cashier_id*, cashier_name) Category(category_id*, category_name) Product(product_id*, product_name, price, category_id**) Purchase(product_id**, cashier_id**, amount) * primary key ** foreign key 我想选择购买次数最多的类别名称。这是我到目前为止

我在一个数据库中有四个表。表如下所示:

Cashier(cashier_id*, cashier_name)
Category(category_id*, category_name)
Product(product_id*, product_name, price, category_id**)
Purchase(product_id**, cashier_id**, amount)

* primary key
** foreign key
我想选择购买次数最多的类别名称。这是我到目前为止所做的,但我无法得到我想要的结果

SELECT x.category,x.amount
    FROM (SELECT category_name as category, SUM(amount) as amount FROM 
          Category c, Product pr, Purchase pu WHERE pr.product_id = 
          pu.product_id and c.category_id = pr.category_id GROUP BY 
          category_name) x
    GROUP BY x.category
    HAVING MAX(x.amount);

大概你想要这样的东西:

SELECT c.category_name as category, SUM(amount) as amount
FROM Category c JOIN
     Product pr
     ON c.category_id = pr.category_id JOIN
     Purchase pu 
     ON pr.product_id = pu.product_id
GROUP BY category_name
ORDER BY SUM(amount) DESC
LIMIT 1;

请勿在FROM子句中使用逗号。始终使用正确、明确、标准的联接语法。

如果在from子句中使用,它将执行交叉联接。至于MAXx.amount:假设最大值为5。所以你有5个。你认为这会有什么作用?比如说,有些产品属于A类,A类的购买量最高。我想得到类别名称和它的编号purchase@MulqanJunaidi你已经得到了答案。请回复。另外,您可以使用@vivek_23共享您的表吗?它与Gordon Linoff的查询配合得很好。但是我想知道我是否可以直接使用MAX而不是LIMIT来定位最高购买量。非常感谢,它可以按照预期工作,但是我想知道我是否可以使用MAX而不是LIMIT来直接定位最高购买量。顺便说一句,你的查询非常有效,我只是想知道我是否也可以使用MAX。感谢you@MulqanJunaidi . . . 不是你想用的那种方式。