SQL查询从一个表中获取基于另一个表的列的数据?

时间:2012-04-16 20:21:16

标签: sql database oracle

在我的表中我有例如

县表中的CountyID,County和CityID以及城市表中我有表格,例如

城市ID和城市

如何创建一个报告,从县表中提取县,并根据县表中的cityid拉取城市。

由于

3 个答案:

答案 0 :(得分:1)

由于这是一个非常基本的问题,我会给你一个基本答案,而不是为你做的代码。

如果表中的列具有彼此“匹配”的列,则可以将它们连接在一起,并将结果与​​查询结果几乎一样。

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

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

答案 1 :(得分:0)

两个表之间明显的共同点是CityID,所以你要加入。我认为您的数据组织有误,我将CountryID放在City表中而不是CountryID中的CountryID。然后,根据所选的CountryID,您可以基于此限制对City表的查询。

答案 2 :(得分: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是最常见的。内部手段必须在两个表中匹配。 LEFT表示必须与左侧的表匹配,无论与右侧的匹配... ex:

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

从这些示例中,您应该能够轻松地将表格及其关系相互结合到您的结果中......