Hey, Jochem...

Since you've got a good grip on how the joins work, would my explanation
for my notes concerning why this query works be accurate?

Notes:

This query works to select UtilityWaivers that were issued within a given
month
and which were issued without an accompanying RentalWaiver.

The part of the query before the "where" clause selects all UtilityWaivers
which were issued within the specified month and which have
accompanying RentalWaivers with matching ClientID's for the same month.

The "where" clause then specifies that the joined group should be limited
to those UtilityWaivers whose ClientID does match any RentalWaiver ClientID.

     <CFQUERY Name="GetUCSWCount" Datasource="#DSN#">
          Select UW.UtilityWaiverID
            from utilitywaivers UW
       left join RentalWaivers RW
               on (UW.ClientID = RW.ClientID
             and Month(RW.RentalWaiverDate) = #Form.Month#
             and Year(RW.RentalWaiverDate) = #Form.Year#
                      )
           where UW.UtilityCompanyID = #MultipleWaivers[CurrentRow][1]#
             and Month(UW.IssueDate) = #Form.Month#
             and Year(UW.IssueDate) = #Form.Year#
             and RW.ClientID IS NULL
     </CFQUERY>

Thanks,

Rick



-----Original Message-----
From: Jochem van Dieten [mailto:[EMAIL PROTECTED]]
Sent: Thursday, December 19, 2002 10:21 AM
To: CF-Talk
Subject: RE: How to do this without the subselect?


Quoting Rick Faircloth <[EMAIL PROTECTED]>:
>
> Now, that's a good question.  I've always used subselects to get
> around having to spend time with those unfriendly (at least to me!)
> joins.

Then maybe MySQL isn't the database for you :)


>       Select UW.UtilityWaiverID
>          from utilitywaivers UW
>        where UW.UtilityCompanyID=#MultipleWaivers[CurrentRow][1]#
>           and Month(UW.IssueDate) = #Form.Month#
>           and Year(UW.IssueDate) = #Form.Year#
>           and UW.ClientID not in
>                 (Select RW.ClientID from RentalWaivers RW
>                  where Month(RW.RentalWaiverDate) = #Form.Month#
>                     and Year(RW.RentalWaiverDate) = #Form.Year#)

I think it should be:

SELECT UW.UtilityWaiverID
FROM   utilitywaivers UW LEFT JOIN RentalWaivers RW
           ON (UW.ClientID = RW.ClientID
              AND Month(RW.RentalWaiverDate) = #Form.Month#
              AND Year(RW.RentalWaiverDate) = #Form.Year#
              )
WHERE  UW.UtilityCompanyID = #MultipleWaivers[CurrentRow][1]#
       AND Month(UW.IssueDate) = #Form.Month#
       AND Year(UW.IssueDate) = #Form.Year#
       AND RW.ClientID IS NULL

Don't forget to add the appropriate cfqueryparam tags.

Jochem

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
Archives: http://www.houseoffusion.com/cf_lists/index.cfm?forumid=4
Subscription: 
http://www.houseoffusion.com/cf_lists/index.cfm?method=subscribe&forumid=4
FAQ: http://www.thenetprofits.co.uk/coldfusion/faq
Structure your ColdFusion code with Fusebox. Get the official book at 
http://www.fusionauthority.com/bkinfo.cfm

Reply via email to