Ich habe zwei Tabellen, interne und externe. Beide Tabellen haben die gleichen Spalten viz. Titel, Name, Adresse, Id, RefNo, MergeRefNo, StatusSQL Joins ADODB
Angenommen, die 'externe' Tabelle hat folgende Daten:
<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 </td>
<td style="width: 86px;">NULL </td>
<td style="width: 47px;">A </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 </td>
</tr>
</tbody>
</table>
Und die 'Internal' Tabelle hat Daten wie unten :
<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 </td>
<td style="width: 86px;">NULL </td>
<td style="width: 47px;">A </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 </td>
</tr>
</tbody>
</table>
Die Anforderung ist, wo die IDs in beiden Tabellen gleich sind und der Status 'A' (oder) RefNos gleich und Status in ('A', 'M') ist, Daten in 'Intern' sollten 'Extern' überschreiben.
Also, im obigen Beispiel, da beide D1 in beiden Tabellen gemeinsam ist, sollte "Weiß" durch "John" ersetzt werden. Außerdem sollte ‚Rita‘ mit ‚Blue‘ überschrieben werden, da Refnos gleich ist (dh 100_B, obwohl IDs unterscheiden)
Also schrieb ich die unten stehende Abfrage
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
aber wenn es Wert in ‚externen‘ (z. B. XYZ), die in Intern durch "Null" -Daten ersetzt werden müssen, schlägt die obige Abfrage wegen IsNull fehl. Wie könnte ich tatsächlich die "internen" Tabellenwerte verwenden, die beide Join-Bedingungen erfüllen (d. H. IDs sind gleich (oder) Refnos sind gleich).
(Apologies für schlechte Formatierung)
(Wie in Abfrage erwähnt, nicht in der Lage, den Filter zu verwenden, in Joinbedingung in ADODB .. irgendwelche Hinweise?)
Vielen Dank!