【问题标题】:How do I join 2 tables in SQL Server如何在 SQL Server 中加入 2 个表
【发布时间】:2021-08-29 04:53:35
【问题描述】:

我有两个表如下tblPost表中tblBranch表的id值分别在Cityid、catid、Desid列 如何将这两个表连接在一起以查看 cityid、catid、Desid 的值?

tblBranch                  tblPost
----------                 -----------
id                         id
Name                       title
                           cityid
                           catid
                           Desid

【问题讨论】:

  • tblBranch 有 2 个 cloumn id,Name
  • tblPost 有 5 个 cloumn id,title,cityid,catid,desid,那个 cityid,catid 和 desid 值在 tblBranch 中
  • 你想要输出的三列都来自tblPost 表——你为什么还要加入?没有多大意义.....
  • @SoroshFt 你是说需要看到tblBranch中的Name对应每个cityIdcatidDesid
  • 请阅读this,了解一些改进问题的技巧。目前尚不清楚您尝试了什么以及在哪里遇到了麻烦。

标签: sql-server tsql join inner-join


【解决方案1】:

当您连接表时,您将带来/组合两个 TABLES 数据行
并将它们的列根据 MA​​TCHING JOIN 列合并到一个 BIG TABLE 中。

这是内部连接的示例:

tblDepartment
--------------
id_Dept                    NameDept 
1                          Math
2                          Physic 

tblTeacher
----------
id_Teacher                 FullName             id_Dept 
1                          Smith Adam            1
2                          John Doe              1
3                          Marry Doe             2

示例 01:无行过滤器

select TC.id_Teacher, TC.FullName, TC.id_Dept, TD.NameDept from tblTeacher TC inner join tblDepartment TD on TC.id_Dept = TD.id_Dept

连接表的一个大表

id_Teacher                FullName           id_Dept         NameDept
1                         Smith Adam          1              Math 
2                         John Doe            1              Math 
3                         Marry Doe           2              Physic 

示例 02:使用行过滤器

使用 SQL where 子句限制较小的数据行返回的结果 ONE BIG TABLE OF JOINING TABLES

select TC.id_Teacher, TC.FullName, TC.id_Dept, TD.NameDept from tblTeacher TC inner join tblDepartment TD on TC.id_Dept = TD.id_Dept TC.id_Dept = 2

id_Teacher                FullName            id_Dept         NameDept
3                         Marry Doe            2               Physic 

您可以使用上面的示例查看您的表应该加入哪些列以返回带有 BIG TABLE 的结果

【讨论】:

    【解决方案2】:

    因此,如果我理解正确,您想从tblPost 中获取CityIdCatIdDesId,并且对于每个人,您都想加入tblBranch 表并显示@ 987654326@ 那个Id - 对吗?

    在这种情况下,您需要这样的查询:

    SELECT
        CityId, 
        CityName = brCity.Name,
        CatId,
        CatName = brCat.Name,
        DesId,
        DesName = brDes.Name
    FROM
        tblPost p
    LEFT OUTER JOIN
        tblBranch brCity ON p.CityId = brCity.Id
    LEFT OUTER JOIN
        tblBranch brCat ON p.CatId = brCat.Id
    LEFT OUTER JOIN
        tblBranch brDes ON p.DesId = brDes.Id
    

    基本上,您需要有三个连接 - 每个Id 在您的tblPost 表中一个。

    如果Id 之一在tblBranch 表中无法找到/匹配,我选择使用LEFT OUTER JOIN 以避免完全消除一行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-10
      相关资源
      最近更新 更多