2012-04-16 88 views
-3

在我的表我有例如基于另一个表中的列从一个表中获取数据的SQL查询?

CountyID,县和CityID在县表和城市表我有表我有例如

城市标识和城市

如何创建一份报告将县从县表中拉出来,并根据县里的cityid拉市。

感谢

+0

这是sql 101 - 你有什么试过? – 2012-04-16 20:22:58

+1

看到这个:http://tinyurl.com/d3o2yb4和这个:http://tinyurl.com/jo3lz – 2012-04-16 22:04:58

回答

1

由于这是一个相当基本的问题,我给你一个基本答案,而不是代码来为你做它。

如果表格中的列彼此“匹配”,则可以将它们按照它们的共同点加入到一起,然后查询结果,就好像它是一个表一样。

根据您的要求,还有不同类型的连接 - 例如,可能是您加入的其中一个表中的某些行没有相应的匹配项。

如果您确定某个城市肯定会有相应的县,请尝试内部连接其匹配列CityID上的两个表并查询结果。

0

这两个表之间明显的共同联系是CityID,所以你会加入。我认为你的数据组织错了,但我会把CountryID放在City表中,而不是CountryID中的CityID。然后,根据所选的国家/地区代码,您可以基于此限制您对城市表格的查询。

+0

县,而不是国家。但是正确的。 – 2012-04-16 20:30:56

0

在Bridge的回答中,您显然不熟悉SQL,并且有许多地方可以挖掘如何编写它们。然而,你应该训练自己最基本的基础知识总是应用表名或别名来防止歧义,并尽量避免使用可能被认为是语言保留字的列名......它们总是看起来像咬人一样。

也就是说,最基本的查询是

select 
     T1.field1, 
     T1.field2, 
     etc with more fields you want 
    from 
     FirstTable as T1 
    where 
     (some conditional criteria) 
    order by 
     (some column or columns) 

现在,随着多个表打交道时,你需要的JOIN ...通常INNER或LEFT是最常见的。内部装置必须在两个表中匹配。左就是必须在表左侧不管比赛的权利...恩匹配:

select 
     T1.Field1, 
     T2.SomeField, 
     T3.MaybeExistsField 
    from 
     SomeTable T1 
     Join SecondTable T2 
      on T1.SomeKey = T2.MatchingColumnInSecondTable 
     LEFT JOIN ThirdTable T3 
      on T1.AnotherKey = T3.ColumnThatMayHaveTheMatchingKey 
    order by 
     T2.SomeField DESC, 
     T1.Field1 

从这些例子中,你应该能够轻松地将您的表和它们之间的关系,以相互到您的结果...

相关问题