Reputation: 5896
I am attempting to use the below query in an access environment to no avail. The problem seems to be with the APPLY. However, this runs fine directly on our SQL server..... Help?
SELECT
dbo_tblmain.key1,
dbo_tblmain.key2,
dbo_tblmain.data1,
dbo_tblmain.data2,
dbo_tblmain.data3,
dbo_tblsupp.data1,
tbloutmade.data1
FROM dbo_tblmain
LEFT JOIN dbo_tblsupp
ON (dbo_tblmain.key1 = dbo_tblsupp.key1) AND (dbo_tblmain.key2 = dbo_tblsupp.key2)
OUTER APPLY
(SELECT TOP 1 * FROM dbo_tbloutside WHERE LEFT(dbo_tblmain.key1,14)=LEFT(dbo_tbloutside.key1,14)) tbloutmade;
sample data
tblmain
key1 key2 data1 data2 data3
A1234567890 12345678901234AAA AAA BBB CCC
tblsupp
key1 key2 data1
A1234567890 12345678901234AAA DDD
tbloutside
key1 data1
12345678901234AAABB EEE
Upvotes: 1
Views: 1925
Reputation: 91366
You could try:
SELECT
dbo_tblmain.key1,
dbo_tblmain.key2,
dbo_tblmain.data1,
dbo_tblmain.data2,
dbo_tblmain.data3,
dbo_tblsupp.data1,
(SELECT TOP 1 Key1 FROM dbo_tbloutside
WHERE LEFT(dbo_tblmain.key1,14)=LEFT(dbo_tbloutside.key1,14)) As tbloutmade
FROM dbo_tblmain
LEFT JOIN dbo_tblsupp
ON (dbo_tblmain.key1 = dbo_tblsupp.key1)
AND (dbo_tblmain.key2 = dbo_tblsupp.key2)
Upvotes: 2