Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.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 在包含联接的查询中计算行数_Mysql_Count - Fatal编程技术网

Mysql 在包含联接的查询中计算行数

Mysql 在包含联接的查询中计算行数,mysql,count,Mysql,Count,我有一个这样的问题: SELECT Product.local_price*Rate.exchange_rate AS 'US_price' FROM Product INNER JOIN Rate ON Rate.currency = Product.currency WHERE Product.type='TV' HAVING US_price BETWEEN 500 AND 600; SELECT p.type, AVG(p.local_price) FROM Product p

我有一个这样的问题:

SELECT Product.local_price*Rate.exchange_rate AS 'US_price' FROM Product
 INNER JOIN Rate ON Rate.currency = Product.currency
 WHERE Product.type='TV'
 HAVING US_price BETWEEN 500 AND 600;
SELECT p.type, AVG(p.local_price)
FROM Product p
GROUP BY p.type
HAVING AVG(p.local_price) > 50
如何计算满足此查询的电视机数量

表格结构

  • 产品表:ID、类型、当地价格
  • 汇率表:货币、汇率

    • 这里不需要使用
      子句;它的特殊语义仅在有
      groupby
      子句时才相关。因此,我们可以简单地用生成它的表达式替换
      HAVING
      子句中的
      usu price
      ,并将其移动到
      WHERE
      子句中;然后,使用
      选择计数(*)


      此外,作为一般规则(在本例中不需要),您可以始终(或几乎总是?)将整个查询包装在
      SELECT COUNT(*)FROM(…)t
      中,以获取它返回的行总数。

      这里不需要使用
      HAVING
      子句;它的特殊语义仅在有
      groupby
      子句时才相关。因此,我们可以简单地用生成它的表达式替换
      HAVING
      子句中的
      usu price
      ,并将其移动到
      WHERE
      子句中;然后,使用
      选择计数(*)


      此外,作为一般规则(在本例中不需要),您可以始终(或几乎总是?)将整个查询包装在
      中,从(…)t
      中选择COUNT(*)以获取它返回的行总数。

      具有美国价格的
      替换为
      和Product.local\u price*Rate.exchange\u Rate
      ,然后只需执行
      计数即可(Product.ID)
      选择
      子句中:

      SELECT COUNT(Product.ID) 
      FROM Product 
        INNER JOIN Rate ON Rate.currency = Product.currency 
      WHERE Product.type='TV' 
        AND Product.local_price * Rate.exchange_rate BETWEEN 500 AND 600;
      
      如果需要聚合数据的标准,则需要使用
      HAVING
      ,如下所示:

      SELECT Product.local_price*Rate.exchange_rate AS 'US_price' FROM Product
       INNER JOIN Rate ON Rate.currency = Product.currency
       WHERE Product.type='TV'
       HAVING US_price BETWEEN 500 AND 600;
      
      SELECT p.type, AVG(p.local_price)
      FROM Product p
      GROUP BY p.type
      HAVING AVG(p.local_price) > 50
      

      和Product.local\u price*Rate.exchange
      替换
      HAVING US\u price
      ,只需在
      SELECT
      子句中执行
      计数(Product.ID)

      SELECT COUNT(Product.ID) 
      FROM Product 
        INNER JOIN Rate ON Rate.currency = Product.currency 
      WHERE Product.type='TV' 
        AND Product.local_price * Rate.exchange_rate BETWEEN 500 AND 600;
      
      如果需要聚合数据的标准,则需要使用
      HAVING
      ,如下所示:

      SELECT Product.local_price*Rate.exchange_rate AS 'US_price' FROM Product
       INNER JOIN Rate ON Rate.currency = Product.currency
       WHERE Product.type='TV'
       HAVING US_price BETWEEN 500 AND 600;
      
      SELECT p.type, AVG(p.local_price)
      FROM Product p
      GROUP BY p.type
      HAVING AVG(p.local_price) > 50
      

      你为什么在这里使用
      HAVING
      ?你有其他建议吗?我的意思是,这个查询有效吗?给我们你的表结构,告诉我们你想在哪个基础上计算电视机?对不起,应该是美国价格而不是当地价格。你为什么在这里使用
      HAVING
      ?你有其他建议吗?我的意思是,这个查询有效吗k?给我们你们的桌子结构,告诉我们你们要在哪个基础上清点电视机?对不起,应该是美国价格而不是当地价格。