SQL从2个数据库中选择3个表

时间:2014-06-25 15:10:08

标签: sql sql-server

我有三张桌子,上面有一些横幅信息,我需要通过CompanyID选择所有横幅。

表格是:

BannerCompany (AdminMaster.dbo.BannerUnidades)
Banner        (AdminMaster.dbo.Banner)
BannerClient  (AdminHotSite.dbo.Banner)
  • 第一个表格( BannerCompany )有 CompanyID BannerID ,并且链接到表格横幅广告 by BannerID ;

  • 第二个表格(横幅)包含 BannerID 以及所有其余横幅信息;

  • 第三个表格( BannerClient )是另一个表格,其中我还有其他横幅广告 CompanyID BannerID (此 BannerClient 中的> BannerID 与表横幅中的 BannerID 不同。

我需要的是选择 BannerCompany 上的横幅,并使用横幅将横幅 WHERE 相关联在 BannerCompany.BannerCompanyID 上,然后选择 BannerClient 中的横幅,其中包含相同的位置,但现在位于 BannerClient.BannerCompanyID 上。

现在,我可以从第一个和第二个选择横幅,但我找不到将第三个表放在游戏上的方法。

所有表都具有相同名称的相同列。

到目前为止我的代码:

SELECT * FROM AdminMaster.dbo.BannerUnidades AS bUnidade
INNER JOIN AdminMaster.dbo.Banner  AS bMaster ON bUnidade.BannerID = bMaster.BannerID
INNER JOIN AdminHotSite.dbo.Banner AS bHS     ON bHS.BannerPrincipal = 1
WHERE bHS.UnidadeCodEmitente = 45471

提前致谢。

1 个答案:

答案 0 :(得分:1)

我认为这会给你一个起点。

获取特定公司的所有横幅列表:

SELECT bMaster.BannerID, bHS.BannerTitulo 
FROM AdminMaster.dbo.BannerUnidades AS bUnidade
INNER JOIN AdminMaster.dbo.Banner  AS bMaster ON bUnidade.BannerID = bMaster.BannerID
WHERE bUnidade.UnidadeCodEmitente = 45471

UNION ALL

SELECT bHS.BannerID, bHS.BannerTitulo 
FROM AdminHotSite.dbo.Banner AS bHS
WHERE bHS.UnidadeCodEmitente = 45471 AND bHS.BannerPrincipal = 1

获取具有自定义ORDER BY的特定公司的所有横幅列表:

SELECT bMaster.BannerID, bHS.BannerTitulo, SortOrder = 1, BannerOrdem 
FROM AdminMaster.dbo.BannerUnidades AS bUnidade
INNER JOIN AdminMaster.dbo.Banner  AS bMaster ON bUnidade.BannerID = bMaster.BannerID
WHERE bUnidade.UnidadeCodEmitente = 45471

UNION ALL

SELECT bHS.BannerID, bHS.BannerTitulo, SortOrder = 2,  BannerOrdem 
FROM AdminHotSite.dbo.Banner AS bHS
WHERE bHS.UnidadeCodEmitente = 45471 AND bHS.BannerPrincipal = 1
ORDER BY SortOrder, BannerOrdem