选择层次结构中某个类型的每个元素的查询



我有两个数据库表。

  Table A              Table B
  Continent text       City                Text
  Country   text       Citizen ID (unique) Int    
  City      text       

如何编写一个查询,以"大陆"、"国家"、"城市"和(每个城市的公民数量)的形式返回特定大陆内每个城市的一行?

如果我想进一步限制它,比如针对特定大陆和国家的每个城市,该怎么办?

我很难将查询可视化为一系列嵌套的for循环之外的其他内容。我有点不知道如何加入表格,这样我就可以统计公民身份并获得必要的地理限制。如果我只是有点笨,我提前道歉。

您没有提到您正在使用的DBMS,所以我假设是MSServer。您可以应用JoinCount来获得row for every city within a particular continent in the form of Continent, Country, City, and (number of citizens per city)

   SELECT
         a.Continent,
         a.Country,
         a.City,
         Count(b.CitizenID) AS 'NumberOfCitizens'
  FROM
     tableA a Join tableB b
     ON a.City = b.City
  WHERE
     a.Continent = 'Yourcontinent'
  Group By
      a.Continent,a.Country,a.City,

如果要进一步限制,则可以在where子句中添加条件,
示例-对于每个国家的限制,您可以在Where条款中添加

    AND a.Country = 'Yourcountry'

对于每个城市的限制,您可以在Where条款中添加

     AND a.City = 'Yourcity'

您可以阅读更多关于Join和Where子句的信息。

最新更新