Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.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
我如何在select查询中使用mysql计数?_Mysql_Select_Count - Fatal编程技术网

我如何在select查询中使用mysql计数?

我如何在select查询中使用mysql计数?,mysql,select,count,Mysql,Select,Count,我有一个mysql select查询,如下所示: select r.restaurant_id, r.restaurant_name, r.city_id, c.name from restaurants r inner join cities c on c.id = r.city_id; 这是上述查询的结果: +---------------+----------------------+---------+-------------+ | restaurant_id | restaur

我有一个mysql select查询,如下所示:

select r.restaurant_id, r.restaurant_name, r.city_id, c.name
from restaurants r
inner join cities c on c.id = r.city_id;  
这是上述查询的结果:

+---------------+----------------------+---------+-------------+
| restaurant_id | restaurant_name      | city_id | name        |
+---------------+----------------------+---------+-------------+
|             7 | Somasiri Bake House  |       5 | Mumbai      |
|             8 | Indian    Bake House |       7 | Chennai     |
|             9 | KFC Rest             |       5 | Mumbai      |    
|            10 | Indian t             |       5 | Mumbai      |
+---------------+----------------------+---------+-------------+
现在我想显示所有可用的城市,以及一个城市现有的餐厅数量

例如:孟买(3)、钦奈(1)等等

我用mysql
con()
尝试了下面的方法,但它对我不起作用

SELECT c.name, count(r.city_id) AS count
FROM cities c
INNER JOIN restaurants r ON c.id = r.city_id;
谁能告诉我这有什么问题吗

希望有人能帮助我。
多谢各位

这称为分组或聚合查询,您需要告诉它如何对元素进行分组

加上

GROUP BY r.restaurant_id, r.restaurant_name, r.city_id, c.name

最后,在您的最后分号之前。

这称为分组或聚合查询,您需要告诉它如何对元素进行分组

加上

GROUP BY r.restaurant_id, r.restaurant_name, r.city_id, c.name

最后,在您的最后分号之前。

这称为分组或聚合查询,您需要告诉它如何对元素进行分组

加上

GROUP BY r.restaurant_id, r.restaurant_name, r.city_id, c.name

最后,在您的最后分号之前。

这称为分组或聚合查询,您需要告诉它如何对元素进行分组

加上

GROUP BY r.restaurant_id, r.restaurant_name, r.city_id, c.name

最后,在您的最后分号之前。

如果您不需要餐厅数据,请使用一个简单的分组:

select c.name, count(r.city_id) as available
from cities c
left join restaurants r on c.id = r.city_id
group by r.city_id


或者,如果您也需要餐厅数据,请先选择“从城市”,然后左键“连接到其他表”,以便返回没有餐厅的城市。向计算每个城市频率的子查询添加左连接:

select
  r.restaurant_id,
  r.restaurant_name,
  c.id,
  c.name,
  coalesce(available, 0) available
from cities c
left join restaurants r on c.id = r.city_id
left join (select city_id, count(*) available from restaurants group by 1) a
  on a.city_id = r.city_id

请参阅。

如果不需要餐厅数据,请使用简单的分组方式:

select c.name, count(r.city_id) as available
from cities c
left join restaurants r on c.id = r.city_id
group by r.city_id


或者,如果您也需要餐厅数据,请先选择“从城市”,然后左键“连接到其他表”,以便返回没有餐厅的城市。向计算每个城市频率的子查询添加左连接:

select
  r.restaurant_id,
  r.restaurant_name,
  c.id,
  c.name,
  coalesce(available, 0) available
from cities c
left join restaurants r on c.id = r.city_id
left join (select city_id, count(*) available from restaurants group by 1) a
  on a.city_id = r.city_id

请参阅。

如果不需要餐厅数据,请使用简单的分组方式:

select c.name, count(r.city_id) as available
from cities c
left join restaurants r on c.id = r.city_id
group by r.city_id


或者,如果您也需要餐厅数据,请先选择“从城市”,然后左键“连接到其他表”,以便返回没有餐厅的城市。向计算每个城市频率的子查询添加左连接:

select
  r.restaurant_id,
  r.restaurant_name,
  c.id,
  c.name,
  coalesce(available, 0) available
from cities c
left join restaurants r on c.id = r.city_id
left join (select city_id, count(*) available from restaurants group by 1) a
  on a.city_id = r.city_id

请参阅。

如果不需要餐厅数据,请使用简单的分组方式:

select c.name, count(r.city_id) as available
from cities c
left join restaurants r on c.id = r.city_id
group by r.city_id


或者,如果您也需要餐厅数据,请先选择“从城市”,然后左键“连接到其他表”,以便返回没有餐厅的城市。向计算每个城市频率的子查询添加左连接:

select
  r.restaurant_id,
  r.restaurant_name,
  c.id,
  c.name,
  coalesce(available, 0) available
from cities c
left join restaurants r on c.id = r.city_id
left join (select city_id, count(*) available from restaurants group by 1) a
  on a.city_id = r.city_id


请参阅。

您缺少了一个
分组依据
。您缺少了一个
分组依据
。您缺少了一个
分组依据
。我鼓励正确使用
分组依据
(不是MySQL的错误行为)将所有
SELECT
列添加到组中:
groupbyr.restaurant\u id、r.restaurant\u name、r.city\u id、c.name
单独使用
groupbyr.city\u id
几乎在任何其他数据库中都是错误的。是的,它的工作。。。但它并没有选择所有的选项cities@MichaelBerkowski . . . 我大体上同意你的意见。然而,根据ANSI,由于函数依赖的概念,这个特定的例子并不是不正确的行为。我认为Postgres可能是唯一一个正确实现这一功能的数据库,它在解释这一概念方面做得很好()。即使没有任何餐厅,我们也能选择所有可用的城市吗?我同意@MichaelBerkowski的观点,按所有未聚合列分组是理想的。我鼓励正确使用
分组方式
(不是MySQL的错误行为)通过将所有
SELECT
列添加到组中:
groupbyr.restaurant\u id、r.restaurant\u name、r.city\u id、c.name
单独使用
groupbyr.city\u id
几乎在任何其他数据库中都是错误的。是的,它可以工作……但它没有选择所有cities@MichaelBerkowski…我大体上同意你的看法。但是,我认为根据ANSI标准,由于函数依赖性的概念,特别的例子不是不正确的行为。我认为Postgres可能是唯一正确实现此功能的数据库,它在解释这一概念方面做了充分的工作()。即使没有任何餐厅,我们也可以选择所有可用的城市吗?我同意@MichaelBerkowski的观点,按所有未聚合的列进行分组是理想的。我鼓励正确使用
GROUP by
(不是MySQL的错误行为)通过将所有
SELECT
列添加到组中:
groupbyr.restaurant\u id、r.restaurant\u name、r.city\u id、c.name
单独使用
groupbyr.city\u id
几乎在任何其他数据库中都是错误的。是的,它可以工作……但它没有选择所有cities@MichaelBerkowski…我大体上同意你的看法。但是,我认为根据ANSI标准,由于函数依赖性的概念,特别的例子不是不正确的行为。我认为Postgres可能是唯一正确实现此功能的数据库,它在解释这一概念方面做了充分的工作()。即使没有任何餐厅,我们也可以选择所有可用的城市吗?我同意@MichaelBerkowski的观点,按所有未聚合的列进行分组是理想的。我鼓励正确使用
GROUP by
(不是MySQL的错误行为)通过将所有
SELECT
列添加到组中:
groupbyr.restaurant\u id、r.restaurant\u name、r.city\u id、c.name
单独使用
groupbyr.city\u id
几乎在任何其他数据库中都是错误的。是的,它可以工作……但它没有选择所有cities@MichaelBerkowski…我大体上同意你的看法。但是,我认为根据ANSI标准,由于函数依赖性的概念,特别的例子不是不正确的行为。我认为Postgres可能是唯一正确实现此功能的数据库,它在解释这一概念方面做了充分的工作()。即使没有任何餐厅,我们也可以选择所有可用的城市吗?我同意@MichaelBerkowski的说法,按所有未聚合的列进行分组是理想的。波希米亚,您的查询返回了所有可用的餐厅