首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL连接ADODB

SQL连接ADODB
EN

Stack Overflow用户
提问于 2017-03-20 09:08:01
回答 1查看 345关注 0票数 0

我有两张桌子,里面的和外面的。两个表都有相同的列,即。标题,名称,地址,Id,RefNo,MergeRefNo,状态

假设“外部”表有以下数据:

代码语言:javascript
复制
<table style="width: 351px;">
  <tbody>
    <tr>
      <td style="width: 38px;">Title</td>
      <td style="width: 43px;">Name</td>
      <td style="width: 59px;">Address</td>
      <td style="width: 25px;">Id</td>
      <td style="width: 52px;">RefNo</td>
      <td style="width: 86px;">MergeRefNo</td>
      <td style="width: 47px;">Status</td>
    </tr>
    <tr>
      <td style="width: 38px;">Mr.</td>
      <td style="width: 43px;">White</td>
      <td style="width: 59px;">123</td>
      <td style="width: 25px;">D1</td>
      <td style="width: 52px;">100_A</td>
      <td style="width: 86px;">NULL</td>
      <td style="width: 47px;">A</td>
    </tr>
    <tr>
      <td style="width: 38px;">Ms.</td>
      <td style="width: 43px;">Rita</td>
      <td style="width: 59px;">234</td>
      <td style="width: 25px;">D2</td>
      <td style="width: 52px;">100_B&nbsp;</td>
      <td style="width: 86px;">NULL&nbsp;</td>
      <td style="width: 47px;">A&nbsp;</td>
    </tr>
    <tr>
      <td style="width: 38px;">Dr.</td>
      <td style="width: 43px;">CP</td>
      <td style="width: 59px;">678</td>
      <td style="width: 25px;">D3</td>
      <td style="width: 52px;">100_C</td>
      <td style="width: 86px;">100_B</td>
      <td style="width: 47px;">M&nbsp;</td>
    </tr>
  </tbody>
</table>

“内部”表的数据如下:

代码语言:javascript
复制
<table style="width: 351px;">
  <tbody>
    <tr>
      <td style="width: 38px;">Title</td>
      <td style="width: 43px;">Name</td>
      <td style="width: 59px;">Address</td>
      <td style="width: 25px;">Id</td>
      <td style="width: 52px;">RefNo</td>
      <td style="width: 86px;">MergeRefNo</td>
      <td style="width: 47px;">Status</td>
    </tr>
    <tr>
      <td style="width: 38px;">Mr.</td>
      <td style="width: 43px;">John</td>
      <td style="width: 59px;">XYZ</td>
      <td style="width: 25px;">D1</td>
      <td style="width: 52px;">100_A</td>
      <td style="width: 86px;">NULL</td>
      <td style="width: 47px;">A</td>
    </tr>
    <tr>
      <td style="width: 38px;">Ms.</td>
      <td style="width: 43px;">Blue</td>
      <td style="width: 59px;">CDE</td>
      <td style="width: 25px;">M6</td>
      <td style="width: 52px;">100_B&nbsp;</td>
      <td style="width: 86px;">NULL&nbsp;</td>
      <td style="width: 47px;">A&nbsp;</td>
    </tr>
    <tr>
      <td style="width: 38px;">Dr.</td>
      <td style="width: 43px;">CP</td>
      <td style="width: 59px;">678</td>
      <td style="width: 25px;">D3</td>
      <td style="width: 52px;">100_C</td>
      <td style="width: 86px;">100_B</td>
      <td style="width: 47px;">M&nbsp;</td>
    </tr>
  </tbody>
</table>

要求是,当is在两个表中相同,状态是'A‘(或) RefNos是相同的,状态在('A','M'),’内部‘中的数据应该覆盖’外部‘。

因此,在上面的示例中,由于这两个D1在两个表中都很常见,所以应该将'White‘替换为'John’。此外,“Rita”应该被“Blue”覆盖,因为Refnos是相等的(即100_B,尽管ID不同)。

所以我写了下面的查询

代码语言:javascript
复制
select   isnull(c.title,isnull(b.title,a.title)),isnull(c.initials,isnull(b.initials,a.initials)),isnull(c.forename,isnull(b.forename,a.forename)),isnull(c.surname,isnull(b.surname,a.surname)),isnull(c.id,isnull(b.id,a.id)) 
from  external a
left  join internal b on a.id = b.id -- and status = 'a' -- unable to use this in ADO
left join internal c on c.refno= a.refno  -- and status in ('a','m') -- unable to use this in ADO

但是,当内部中需要用'null‘数据替换'external’(例如XYZ)中的值时,由于IsNull,上面的查询会失败。我如何实际使用满足两个连接条件(即ID是相同的(或) Refnos是相同的)的“内部”表值。

(对格式不佳表示歉意)

(如查询中所述,无法在ADODB中的联接条件下使用筛选器。有线索吗?)

非常感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-21 05:51:43

我找到了一种方法,通过拆分这两个查询并使用UNION连接它们。

代码语言:javascript
复制
select a.title, a.initials, a.forename, a.surname, a.id
from internal a
inner join external b on a.id = b.id
where a.status = 'a'
union
select a.title, a.initials, a.forename, a.surname, a.id
from internal a
inner join external b on a.refno = b.refno
where a.status in ('a','m')

不过,如果有更好的选择,请让我知道。

谢谢

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42899512

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档