【发布时间】:2010-11-02 09:59:29
【问题描述】:
我有 2 个数据库,即 db1、db2。我需要一个从这些 dbs(db1,db2) 中获取数据的查询,这些 dbs(db1,db2) 每个都有 2 个表(让步,发票)。
在 db1.concessions => 让步是主键。 db1.invoicing => [Concession Number] 是主键
同样在 db2.concessions => 让步是主键。 db2.invoicing => [Concession Number] 是主键
在数据库1中
db1.tbl1 => 优惠表有数据
concession
TH-123
TH-456
FP-789
NZ-609
db1.tbl2 => 发票表有数据
[Concession Number] invoiced_on
TH-322 10.09.10
TH-900 23.10.10
FP-675 04.05.09
NZ-111 19.11.08
幸运的是,在数据库中,让步的值是唯一的。即让步。[让步] = 发票。[让步号] 不产生任何数据..
在数据库 2 中:
db1.tbl1 => 优惠表有数据
concession
TH-123
FP-789
NZ-999
TH-900
db1.tbl2 => 发票表有数据
[Concession Number] invoiced_on(dd.mm.yy)
TH-456 18.01.06
TH-777 23.10.04
FP-675 03.05.09
NZ-149 26.11.08
这里在 db2 让步是唯一的,让步。[让步] = 开票。[让步号] 不产生任何数据..
现在查询应该获取有共同点的记录 db1.(concessions.concession OR invoicing.concession number) = db2(concessions.concession OR invoicing.concession number)
在它应该返回的样本数据中,TH-123、FP-789、NZ-999、FP-675。
我的第二个问题是有可能将此查询扩展到多个数据库。我无法将数据库的计数更改为 1,因为它们已经固定。请让我知道相同的最佳程序。
我试过这样的,有语法错误,
SELECT a.concession as db1_CON_NUMBER FROM db1.dbo.concessions as a UNION
SELECT b.[Concession Number] as db1_CON_NUMBER FROM db1.dbo.invoicing as b
INNER JOIN
SELECT c.concession as db2_CON_NUMBER FROM db2.dbo.concessions as c UNION
SELECT d.[Concession Number] as db2_CON_NUMBER FROM db2.dbo.invoicing as d
ON db1_CON_NUMBER = db2_CON_NUMBER
希望您能回答这两个问题。 感谢您耐心阅读这么长的邮件!
【问题讨论】:
-
只需在表前加上数据库名称,如 db1.dbo.tbl1 并在查询中使用它。
-
感谢您的回复。我也是这样做的。即 db1.dbo.concessions 和 db1.dbo.invoicing
标签: sql sql-server sql-server-2005