In article <[EMAIL PROTECTED]>,
"Christopher J. Mackie" <[EMAIL PROTECTED]> writes:

> There's something I'm not getting about how to put a SELECT restriction on a query 
> with an outer join.  The following query:
> SELECT Applicants.AppID, Applicants.Name, Applicants.Email, 
> Reviews.Quant, Reviews.Qual
> FROM ApplicantStatus
> INNER JOIN Applicants ON Applicants.AppID = ApplicantStatus.AppID
> LEFT JOIN Reviews ON Reviews.AppID = Applicants.AppID
> WHERE ApplicantStatus.Active = 1
> AND ApplicantStatus.SCode = '####'

> AND C.Reviewer.ID = 2;
 
> returns only Applicants who have reviews from Reviewer # 2.  What I want is *all* 
> applicants who meet the other two criteria (Active, and SCode =...), and *any* 
> reviews by Reviewer 2 for any of those applicants (if Reviewer 2 hasn't written for 
> Applicant a, then a should still be in the result set, but with the Reviews.* 
> columns as NULL).  
 
> When I remove the final "ReviewerID = 2" restriction, all of the right applicants 
> are in the dataset--but with a lot of extra rows due to reviews by other reviewers.  
> How do I get rid of Reviewers {1, 3...n}, without losing all the applicants who've 
> never met Reviewer #2?  

If "C.Reviewer.ID" is a typo for "Reviews.ReviewerID", the solution is
simple:

  SELECT Applicants.AppID, Applicants.Name, Applicants.Email, 
  Reviews.Quant, Reviews.Qual
  FROM ApplicantStatus
  INNER JOIN Applicants ON Applicants.AppID = ApplicantStatus.AppID
  LEFT JOIN Reviews ON Reviews.AppID = Applicants.AppID
                   AND C.Reviewer.ID = 2
  WHERE ApplicantStatus.Active = 1
  AND ApplicantStatus.SCode = '####';


-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to