ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   ADO Recordset Problem -- Left Join (https://www.excelbanter.com/excel-programming/321439-ado-recordset-problem-left-join.html)

ExcelMan

ADO Recordset Problem -- Left Join
 
I'm trying to execute a query that joins two Excel tables. I need all the
records in the first table and those in the second table that match the (2
field) key in the second table -- the typical LEFT JOIN query situation.

Problem is, the recordset being returned only seems to bring back records
that match on fields in BOTH tables, as if I were doing an equi-join. I
don't understand this behavior, especially in light of my successful
execution of a RIGHT JOIN query moments earlier in the code.

Is there something I need to do to clear things out? Shown below is the SQL
used in the query. Thanks for your help.

SELECT T1.*, T2.* FROM tblEqpReportTLTempTbl As T1 LEFT JOIN
TranDataActTblTLTempTbl As T2 ON (T1.TranName = T2.TranName AND T1.Fund =
T2.Fund) WHERE T2.TranType ='DbtPro'

There are 76 records in tblEqpReportTLTempTL and 39 records in
TranDataActTblTLTempTbl that have TranType = 'DbtPro'. When I run the
query I get a recordset returned with 39 records. I should be getting 76.

Thanks.



Tom Ogilvy

ADO Recordset Problem -- Left Join
 
Shouldn't it be
WHERE T1.TranType ='DbtPro'

rather than
WHERE T2.TranType ='DbtPro'

--
Regards,
Tom Ogilvy


"ExcelMan" wrote in message
...
I'm trying to execute a query that joins two Excel tables. I need all the
records in the first table and those in the second table that match the (2
field) key in the second table -- the typical LEFT JOIN query situation.

Problem is, the recordset being returned only seems to bring back records
that match on fields in BOTH tables, as if I were doing an equi-join. I
don't understand this behavior, especially in light of my successful
execution of a RIGHT JOIN query moments earlier in the code.

Is there something I need to do to clear things out? Shown below is the

SQL
used in the query. Thanks for your help.

SELECT T1.*, T2.* FROM tblEqpReportTLTempTbl As T1 LEFT JOIN
TranDataActTblTLTempTbl As T2 ON (T1.TranName = T2.TranName AND T1.Fund =
T2.Fund) WHERE T2.TranType ='DbtPro'

There are 76 records in tblEqpReportTLTempTL and 39 records in
TranDataActTblTLTempTbl that have TranType = 'DbtPro'. When I run the
query I get a recordset returned with 39 records. I should be getting 76.

Thanks.





Rob van Gelder[_4_]

ADO Recordset Problem -- Left Join
 

WHERE T2.TranType ='DbtPro'
or T2.TranType is null

--
Rob van Gelder - http://www.vangelder.co.nz/excel


"ExcelMan" wrote in message
...
I'm trying to execute a query that joins two Excel tables. I need all the
records in the first table and those in the second table that match the (2
field) key in the second table -- the typical LEFT JOIN query situation.

Problem is, the recordset being returned only seems to bring back records
that match on fields in BOTH tables, as if I were doing an equi-join. I
don't understand this behavior, especially in light of my successful
execution of a RIGHT JOIN query moments earlier in the code.

Is there something I need to do to clear things out? Shown below is the
SQL
used in the query. Thanks for your help.

SELECT T1.*, T2.* FROM tblEqpReportTLTempTbl As T1 LEFT JOIN
TranDataActTblTLTempTbl As T2 ON (T1.TranName = T2.TranName AND T1.Fund =
T2.Fund) WHERE T2.TranType ='DbtPro'

There are 76 records in tblEqpReportTLTempTL and 39 records in
TranDataActTblTLTempTbl that have TranType = 'DbtPro'. When I run the
query I get a recordset returned with 39 records. I should be getting 76.

Thanks.





ExcelMan

ADO Recordset Problem -- Left Join
 
Rob,

Thanks for your suggestion. I tried it as is and it still didn't seem to
work. Still, I understand the principle you are making. So I rewrote the
query as follows:

SELECT T1.*, T2.* FROM tblEqpReportTLTempTbl As T1 LEFT JOIN (Select *
from TranDataActTblTLTempTbl WHERE TranType = 'DbtPro') T2 ON T1.TranName =
T2.TranName AND T1.Fund = T2.Fund

Now it works great.

Thanks.

"Rob van Gelder" wrote in message
...

WHERE T2.TranType ='DbtPro'
or T2.TranType is null

--
Rob van Gelder - http://www.vangelder.co.nz/excel


"ExcelMan" wrote in message
...
I'm trying to execute a query that joins two Excel tables. I need all

the
records in the first table and those in the second table that match the

(2
field) key in the second table -- the typical LEFT JOIN query situation.

Problem is, the recordset being returned only seems to bring back

records
that match on fields in BOTH tables, as if I were doing an equi-join. I
don't understand this behavior, especially in light of my successful
execution of a RIGHT JOIN query moments earlier in the code.

Is there something I need to do to clear things out? Shown below is the
SQL
used in the query. Thanks for your help.

SELECT T1.*, T2.* FROM tblEqpReportTLTempTbl As T1 LEFT JOIN
TranDataActTblTLTempTbl As T2 ON (T1.TranName = T2.TranName AND T1.Fund

=
T2.Fund) WHERE T2.TranType ='DbtPro'

There are 76 records in tblEqpReportTLTempTL and 39 records in
TranDataActTblTLTempTbl that have TranType = 'DbtPro'. When I run the
query I get a recordset returned with 39 records. I should be getting

76.

Thanks.







Rob van Gelder[_4_]

ADO Recordset Problem -- Left Join
 
Subquery... good work.

I was about to reply to my post - only if TranType was no-null would it
return correct results.
Your solution is better.

--
Rob van Gelder - http://www.vangelder.co.nz/excel


"ExcelMan" wrote in message
...
Rob,

Thanks for your suggestion. I tried it as is and it still didn't seem to
work. Still, I understand the principle you are making. So I rewrote the
query as follows:

SELECT T1.*, T2.* FROM tblEqpReportTLTempTbl As T1 LEFT JOIN (Select *
from TranDataActTblTLTempTbl WHERE TranType = 'DbtPro') T2 ON T1.TranName
=
T2.TranName AND T1.Fund = T2.Fund

Now it works great.

Thanks.

"Rob van Gelder" wrote in message
...

WHERE T2.TranType ='DbtPro'
or T2.TranType is null

--
Rob van Gelder - http://www.vangelder.co.nz/excel


"ExcelMan" wrote in message
...
I'm trying to execute a query that joins two Excel tables. I need all

the
records in the first table and those in the second table that match the

(2
field) key in the second table -- the typical LEFT JOIN query
situation.

Problem is, the recordset being returned only seems to bring back

records
that match on fields in BOTH tables, as if I were doing an equi-join.
I
don't understand this behavior, especially in light of my successful
execution of a RIGHT JOIN query moments earlier in the code.

Is there something I need to do to clear things out? Shown below is
the
SQL
used in the query. Thanks for your help.

SELECT T1.*, T2.* FROM tblEqpReportTLTempTbl As T1 LEFT JOIN
TranDataActTblTLTempTbl As T2 ON (T1.TranName = T2.TranName AND
T1.Fund

=
T2.Fund) WHERE T2.TranType ='DbtPro'

There are 76 records in tblEqpReportTLTempTL and 39 records in
TranDataActTblTLTempTbl that have TranType = 'DbtPro'. When I run the
query I get a recordset returned with 39 records. I should be getting

76.

Thanks.









Jamie Collins

ADO Recordset Problem -- Left Join
 

ExcelMan wrote:
typical LEFT JOIN query situation.

Problem is, the recordset being returned only seems to bring back

records
that match on fields in BOTH tables, as if I were doing an equi-join.

I
don't understand this behavior

SELECT T1.*, T2.* FROM tblEqpReportTLTempTbl As T1 LEFT JOIN
TranDataActTblTLTempTbl As T2 ON (T1.TranName = T2.TranName AND

T1.Fund =
T2.Fund) WHERE T2.TranType ='DbtPro'


Are you using MS Access/Jet? (the use if tbl as a prefix is a MS Access
'hallmark' <g) If so, the explanation is that Jet does not support
ANSI SQL-92 OUTER JOIN syntax. You should be able to specify TranType
in the JOIN criteria e.g.

SELECT T1.*, T2.*
FROM tblEqpReportTLTempTbl As T1
LEFT JOIN TranDataActTblTLTempTbl As T2
ON T2.TranType ='DbtPro'
AND T1.TranName = T2.TranName
AND T1.Fund = T2.Fund;

This gives the desired result set e.g. with SQL Server. However, try it
with Jet and you get an error, 'Join expression not supported.'
Jamie.

--



All times are GMT +1. The time now is 04:05 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com