【问题标题】:Cross-Database Joins跨数据库连接
【发布时间】:2014-05-22 07:32:48
【问题描述】:

我需要加入以下三个不同的表: 注意:两个不同的数据库(来源:http://i.stack.imgur.com/4kF87.png)。

如何执行以下操作:

  1. 检查某人是否回答了问题
  2. 将发件箱中的问题与收件箱中的答案进行比较

【问题讨论】:

  • 我建议你阅读一下JOINS。然后写一些 SQL,给我们看,如果它不起作用,让我们帮助你。
  • 您还需要指定正在使用的数据库。不同数据库之间的连接语句语法并不总是相同。
  • 不能这样吗? ** LEFT JOIN Server1.Database1.dbo.Inbox ON Outbox.Phonenumber = Inbox.Phonenumber ** 我在表 Outbox 所在的数据库 2 中的 server2 上执行查询。
  • 您应该指定是在 2 个 DATABASES 还是 2 个 SERVERS 之间执行查询。这两种情况的解决方案大不相同。

标签: sql join


【解决方案1】:

收件箱和发件箱表之间应该有直接关系,因为一个问题可以有很多答案。

对于您的场景,试试这个 - 使用 Database2.persons 和 database1.Inbox 之间的内部连接来查找回答问题的人数 -

选择 p.id 作为 personid,i.message,i.id 作为 inboxid from database2.persons p join database1.inbox i on p.phonenumber = i.phonenumber;

接下来,比较表发件箱中的问题和收件箱中的答案-

选择 i.personid,o.message 作为问题,i.message 作为答案 (选择 p.id 作为 personid, i.message from database2.person p join database1.inbox i on p.phonenumber = i.phonenumber) i join database2.outbox o on i.personid = o.personid;

【讨论】:

    猜你喜欢
    • 2010-12-13
    • 1970-01-01
    • 2011-09-11
    • 2011-09-19
    • 2011-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-26
    相关资源
    最近更新 更多