ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Subquery after Left Join (https://www.excelbanter.com/excel-programming/350827-subquery-after-left-join.html)

Pontificateur

Subquery after Left Join
 
All:

I have a Personnel table and a Attendance table. I want to join the two,
retrieving all employees but only specific attendance. The following query
works without error, but only gives me employees with matching attendance
records.

SELECT p.p_empno, p.p_fname, p.p_lname, a.a_date, a.a_reason, a.a_comments
FROM hrpersnl p LEFT JOIN
hattran a ON p.p_empno = a.a_empno
WHERE (p.p_active="A") and (a.a_date Between {d '2006-01-01'} And {d
'2006-01-14'})

To get a true left join, I used the following concept in Access, which
worked perfectly. I simply replace the joined table with a subquery and
moved the "where" clause. When I try it in MS Query, I get a "Syntax Error"
message.

SELECT p.p_empno, p.p_fname, p.p_lname, a.a_date, a.a_reason, a.a_comments
FROM hrpersnl p LEFT JOIN
(SELECT * FROM hattran a
WHERE (a.a_date Between {d '2006-01-01'} And {d '2006-01-14'})) a
ON p.p_empno = a.a_empno
WHERE p.p_active="A"


Is there a way I can make this concept work?

Thanks!

greg


Pontificateur

Subquery after Left Join
 
Sorry to rephrase, but I've simplified the issue:

This works...
SELECT p_empno, a_empno
FROM hrpersnl LEFT JOIN hattran
ON p_empno = a_empno

This works in Access, but gives syntax error in Excel query...
SELECT p_empno, a_empno
FROM hrpersnl LEFT JOIN (Select * from hattran)
ON p_empno = a_empno

The only difference is the query after the join. Is this really a syntax
error, or just not allowed in MS Query!?

Thanks again!




"Pontificateur" wrote:

All:

I have a Personnel table and a Attendance table. I want to join the two,
retrieving all employees but only specific attendance. The following query
works without error, but only gives me employees with matching attendance
records.

SELECT p.p_empno, p.p_fname, p.p_lname, a.a_date, a.a_reason, a.a_comments
FROM hrpersnl p LEFT JOIN
hattran a ON p.p_empno = a.a_empno
WHERE (p.p_active="A") and (a.a_date Between {d '2006-01-01'} And {d
'2006-01-14'})

To get a true left join, I used the following concept in Access, which
worked perfectly. I simply replace the joined table with a subquery and
moved the "where" clause. When I try it in MS Query, I get a "Syntax Error"
message.

SELECT p.p_empno, p.p_fname, p.p_lname, a.a_date, a.a_reason, a.a_comments
FROM hrpersnl p LEFT JOIN
(SELECT * FROM hattran a
WHERE (a.a_date Between {d '2006-01-01'} And {d '2006-01-14'})) a
ON p.p_empno = a.a_empno
WHERE p.p_active="A"


Is there a way I can make this concept work?

Thanks!

greg



All times are GMT +1. The time now is 07:00 AM.

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