计数DISTINCT多个mysql行查询



我使用多种方法在mysql表行中插入数据:1#2#3。1是国家的ID,2是州的ID,3是城镇的ID。现在我有了这张房地产清单表。对于每个列表(家),我都有国家/州/城镇(1#2#3)。在乡村表中我有国家列表在乡村表我有州列表在乡村表格我有城镇列表。我需要乡村/州/镇的房屋数量。我的意思是:

USA [ 13 ] <!-- This Is equal of alabama+alaska+arizona -->
----Alabama [8] <!-- This Is equal of Adamsville+Addison+Akron -->
-------Adamsville [2]
-------Addison[5]
-------Akron[1] 
......(list of other City)
----Alaska [ 3 ]
-------Avondale[3]
......(list of other City)
----Arizona [ 2 ]
-------College[2]
......(list of other City)

Lisintg表格:

ID -- NAME -- LOCATION -- DATEJOIN -- ACTIVE
 1 -- TEST -- 1#2#3    -- 20110101 -- 1
 2 -- TEST1 -- 1#2#3    -- 20110101 -- 1
 3 -- TEST2 -- 1#3#5    -- 20110101 -- 1
 4 -- TEST3 -- 1#7#6    -- 20110101 -- 1

国家/地区表:

 id       -- name  
 1        -- USA  

统计表:

id        -- countryid -- name  
 1        -- 1         -- albama
 2        -- 1         -- alaska
 3        -- 1         -- akron

城镇表:

id        -- countryid -- statsid   -- name  
 1        -- 1         -- 1         -- adamsville
 2        -- 1         -- 1         -- addison 
 3        -- 1         -- 1         -- akron

谢谢你的帮助。

我不知道你的表模式,但你可以试试:

SELECT count(DISTINCT country_name) FROM `tbl_country`

count()函数将返回的行数

我认为您的模式不理想,您应该考虑更改它。

  • 您在列表表中的位置字段所做的不仅仅是一件事。也许它应该只存储城镇ID,因为你肯定可以从中计算出州和国家
  • 其他表中的"选择器"列的名称不正确。它们是什么?它们是对其他表中id的外键引用吗?如果是,请这样命名它们

因此,我认为你试图实现的是每个地理区域中所有不同列表的总和。如果是这样,您应该查看SELECT。。。分组。类似的东西

SELECT location,count(*)
FROM listings
GROUP BY location

这将为您提供每个不同位置的列表,以及它在列表表中出现的次数。

最新更新