Php 循环内循环mysql计数

Php 循环内循环mysql计数,php,mysql,Php,Mysql,我已经设置了几个表来表示不同的产品,因为有些产品与其他产品具有不同的属性 我正试图计算一个特定城市列出的物品数量。我的sql语句如下: Select count(*) as count from location, tbl_books where location.city = tbl_books.location && location.city = 'London' && location.country = 'United Kingdom' Select

我已经设置了几个表来表示不同的产品,因为有些产品与其他产品具有不同的属性

我正试图计算一个特定城市列出的物品数量。我的sql语句如下:

Select count(*) as count from location, tbl_books where location.city = tbl_books.location && location.city = 'London' && location.country = 'United Kingdom'

Select count(*) as count from location, tbl_clothes where location.city = tbl_clothes.location && location.city = 'London' && location.country = 'United Kingdom'
这将循环计算全国所有城市的结果。这些循环表示内部循环。外部循环遍历不同的类别表


我发现这不是很有效,我想知道是否有人能够提出任何解决这个问题的方法。我正在考虑创建一个包含城市和类别字段的主表,并在每次从特定城市添加新项目时增加主表中的计数。

下面的SQL查询将通过将location table.city键与tbl_books.location连接起来,将count和location.city值作为一个查询返回钥匙

Select count(*) as count, location.city 
from location, tbl_books 
where location.city = tbl_books.location
group by location.city

这将按城市汇总英国所有城市的所有书籍(出自我的头脑,未经测试):

结果应该如下所示:

location  |  count
--------------------
London    |  5
--------------------
Newcastle |  1
--------------------
...       | ...
country          |   city    |   count
-----------------+-----------+-----------
France           | Paris     |  1
United Kingdom   | Belfast   |  2
United Kingdom   | London    |  3
...

此查询应提供所有城市和国家/地区的账面计数,无需循环:

选择
地点、国家,
地点,城市,
计数(*)为“计数”
来自洛卡顿
在location.city=tbl_books.location上内部连接tbl_books
按地点、国家、地点、城市分组
按地点、国家、地点、城市排序
结果如下所示:

location  |  count
--------------------
London    |  5
--------------------
Newcastle |  1
--------------------
...       | ...
country          |   city    |   count
-----------------+-----------+-----------
France           | Paris     |  1
United Kingdom   | Belfast   |  2
United Kingdom   | London    |  3
...

我看不到任何循环…这很好,我如何将这些计数添加到其他类别表的计数中?我不确定,这取决于表的数量及其结构。也许你应该问一个单独的问题。