OK, a couple of things:
1) Below is the complete code for the query page.


2) Go to www.markleder.com/query.cfm
There are two results screenshots:
Shot 1 = the results from this query
Shot 2 = a detail zoom for one of the members (this is included for
clarification), in this case, I'm getting duplicates, I only want to show
the most resent transactionID (eg, transaction date), not paid thru date.
The most recent transaction ID is the one with the paid thru as 7/31/2004,
not 12/31/2004.  So, on Shot 1, the query results should show the paid
through for this individual as 7/31/2004, not 12/31/2004 as what is occuring
now


HTH


===============================================


<cfprocessingdirective pageencoding="utf-8">
<!--- If user is returning from adding, editing or deleting subscribers,
remove the cached query --->
<cfif URL.kc EQ 1>
<cfobjectcache action=""> </cfif>


<cfset VARIABLES.todaysDate = #CreateODBCDate(Now())#>
<cfparam name="URL.process" default="">
<cfparam name="SESSION.memberList.fieldSelect" type="string" default="All
Fields">
<cfparam name="SESSION.memberList.searchModifier" type="string"
default="containing">
<cfparam name="SESSION.memberList.ffText" type="string" default="">
<cfparam name="SESSION.memberList.DateFrom" type="string" default="">
<cfparam name="SESSION.memberList.DateThru" type="string" default="">
<cfparam name="SESSION.memberList.filterC" default="All"><!--- Member Status
--->
<cfparam name="URL.sortOrder" type="string" default="M.lastName">
<cfparam name="URL.sortDir" type="string" default="ASC">


<!--- If the user is submitting the "search" form, --->
<!--- we'll make their submission be the criteria for rest of session --->
<cfif IsDefined("FORM.fieldnames")><!---ffText--->
  <cfset SESSION.memberList.ffText = FORM.ffText>
   <cfset SESSION.memberList.fieldSelect = FORM.fieldSelect>
   <cfset SESSION.memberList.searchModifier = FORM.searchModifier>
<cfset SESSION.memberList.DateFrom  = FORM.DateFrom>
<cfset SESSION.memberList.DateThru = FORM.DateThru>
   <cfset SESSION.memberList.filterC = FORM.filterC>
<cfset SESSION.memberList.sortOrder   = URL.sortOrder>
<cfset SESSION.memberList.sortDir   = URL.sortDir>
</cfif>


<cfquery name="qmemberList" datasource="#REQUEST.dsnSQL#"
username="#REQUEST.dsnUID#" password="#REQUEST.dsnPWD#"
CACHEDWITHIN="#CreateTimeSpan(0,0,15,0)#">


SELECT M.firstName, M.middleName, M.lastName, M.email, M.company, M.city,
M.zip, M.memberID, M.memberLevelID
FROM #REQUEST.prefix#_Members_List M
WHERE M.memberID =
(SELECT TOP 1 T.transactionID, T.paidThru, T.transactionDate, T.memberID
FROM #REQUEST.prefix#_Members_TransactionLog T) AND


<!--- If the user provided a filter string,  --->
<cfswitch _expression_="#SESSION.memberList.fieldSelect#">
<cfcase value="All Fields">
  (M.firstName <cfif #SESSION.memberList.searchModifier# IS
"containing">LIKE '%#SESSION.memberList.ffText#%'  
         <cfelseif #SESSION.memberList.searchModifier# IS "beginning
with">LIKE '#SESSION.memberList.ffText#%'         
        <cfelseif #SESSION.memberList.searchModifier# IS "equal to">=
'#SESSION.memberList.ffText#' </cfif>
            
OR M.lastName <cfif #SESSION.memberList.searchModifier# IS
"containing">LIKE '%#SESSION.memberList.ffText#%'
         <cfelseif #SESSION.memberList.searchModifier# IS "beginning
with">LIKE '#SESSION.memberList.ffText#%'      
        <cfelseif #SESSION.memberList.searchModifier# IS "equal to">=
'#SESSION.memberList.ffText#'</cfif>
        
OR M.email <cfif #SESSION.memberList.searchModifier# IS "containing">LIKE
'%#SESSION.memberList.ffText#%'
         <cfelseif #SESSION.memberList.searchModifier# IS "beginning
with">LIKE '#SESSION.memberList.ffText#%'      
        <cfelseif #SESSION.memberList.searchModifier# IS "equal to">=
'#SESSION.memberList.ffText#'</cfif>
      
OR M.company <cfif #SESSION.memberList.searchModifier# IS "containing">LIKE
'%#SESSION.memberList.ffText#%'
         <cfelseif #SESSION.memberList.searchModifier# IS "beginning
with">LIKE '#SESSION.memberList.ffText#%'      
        <cfelseif #SESSION.memberList.searchModifier# IS "equal to">=
'#SESSION.memberList.ffText#'</cfif>
      
OR M.city <cfif #SESSION.memberList.searchModifier# IS "containing">LIKE
'%#SESSION.memberList.ffText#%'
         <cfelseif #SESSION.memberList.searchModifier# IS "beginning
with">LIKE '#SESSION.memberList.ffText#%'      
        <cfelseif #SESSION.memberList.searchModifier# IS "equal to">=
'#SESSION.memberList.ffText#'</cfif>
        
OR M.zip <cfif #SESSION.memberList.searchModifier# IS "containing">LIKE
'%#SESSION.memberList.ffText#%'
         <cfelseif #SESSION.memberList.searchModifier# IS "beginning
with">LIKE '#SESSION.memberList.ffText#%'      
        <cfelseif #SESSION.memberList.searchModifier# IS "equal to">=
'#SESSION.memberList.ffText#'</cfif>)            
</cfcase>

<cfcase value="First Name">
   AND M.firstname <cfif #SESSION.memberList.searchModifier# IS
"containing">LIKE '%#SESSION.memberList.ffText#%'
         <cfelseif #SESSION.memberList.searchModifier# IS "beginning
with">LIKE '#SESSION.memberList.ffText#%'        
        <cfelseif #SESSION.memberList.searchModifier# IS "equal to">=
'#SESSION.memberList.ffText#' </cfif>              
</cfcase>
<cfcase value="Last Name">
  AND M.lastname <cfif #SESSION.memberList.searchModifier# IS
"containing">LIKE '%#SESSION.memberList.ffText#%'
         <cfelseif #SESSION.memberList.searchModifier# IS "beginning
with">LIKE '#SESSION.memberList.ffText#%'        
        <cfelseif #SESSION.memberList.searchModifier# IS "equal to">=
'#SESSION.memberList.ffText#' </cfif>
</cfcase>
<cfcase value="Email address">
  AND M.email <cfif #SESSION.memberList.searchModifier# IS "containing">LIKE
'%#SESSION.memberList.ffText#%'
         <cfelseif #SESSION.memberList.searchModifier# IS "beginning
with">LIKE '#SESSION.memberList.ffText#%'        
        <cfelseif #SESSION.memberList.searchModifier# IS "equal to">=
'#SESSION.memberList.ffText#' </cfif>
</cfcase>

<cfcase value="company">
AND M.company <cfif #SESSION.memberList.searchModifier# IS
"containing">LIKE '%#SESSION.memberList.ffText#%'
         <cfelseif #SESSION.memberList.searchModifier# IS "beginning
with">LIKE '#SESSION.memberList.ffText#%'        
         <cfelseif #SESSION.memberList.searchModifier# IS "equal to">=
'#SESSION.memberList.ffText#' </cfif>
</cfcase>
<cfcase value="city">
AND M.city <cfif #SESSION.memberList.searchModifier# IS "containing">LIKE
'%#SESSION.memberList.ffText#%'
         <cfelseif #SESSION.memberList.searchModifier# IS "beginning
with">LIKE '#SESSION.memberList.ffText#%'        
         <cfelseif #SESSION.memberList.searchModifier# IS "equal to">=
'#SESSION.memberList.ffText#' </cfif>
</cfcase>
<cfcase value="zip">
AND M.zip <cfif #SESSION.memberList.searchModifier# IS "containing">LIKE
'%#SESSION.memberList.ffText#%'
         <cfelseif #SESSION.memberList.searchModifier# IS "beginning
with">LIKE '#SESSION.memberList.ffText#%'        
         <cfelseif #SESSION.memberList.searchModifier# IS "equal to">=
'#SESSION.memberList.ffText#' </cfif>
</cfcase>


</cfswitch>


  <!--- Filter on Criteria C (member status) if provided (querySwitch
13)--->
  <cfif SESSION.memberList.FilterC NEQ "All">
AND '#SESSION.memberList.FilterC#' = M.memberLevelID  
  </cfif>
  
  <!--- AND M.memberID = T.memberID  WHERE memberID = M.memberID GROUP BY
memberID
   
  AND EXISTS (SELECT MAX(paidThru) AS paidThruDate, memberID FROM
#REQUEST.prefix#_Members_TransactionLog WHERE memberID = M.memberID GROUP BY
memberID)  --->
  
  <!--- Also filter on From date, if provided --->
<cfif SESSION.memberList.FilterC NEQ "G">
  <cfif IsDate(SESSION.memberList.DateFrom)>
    AND T.paidThru >= #CreateODBCDate(SESSION.memberList.DateFrom)#
  </cfif>
  <!--- Also filter on Through date, if provided --->
  <cfif IsDate(SESSION.memberList.DateThru)>
    AND T.paidThru <= #CreateODBCDate(SESSION.memberList.DateThru)#
  </cfif>
<cfelseif SESSION.memberList.FilterC EQ "G">
  <cfif IsDate(SESSION.memberList.DateFrom)>
    AND T.transactionDate >= #CreateODBCDate(SESSION.memberList.DateFrom)#
  </cfif>
  <!--- Also filter on Through date, if provided --->
  <cfif IsDate(SESSION.memberList.DateThru)>
    AND T.transactionDate <= #CreateODBCDate(SESSION.memberList.DateThru)#
  </cfif>
</cfif>


GROUP BY M.memberID, M.firstName, M.middleName, M.lastName, M.email,
M.company, M.city, M.zip, M.memberLevelID, T.paidThru, T.transactionDate,
T.memberID
   
  <!---- Determines the sort column of the output
  ORDER BY #URL.sortOrder# #URL.sortDIR# --->
</cfquery>

  _____  

From: Alexander Sherwood [mailto:[EMAIL PROTECTED]
Sent: Wednesday, August 18, 2004 11:20 AM
To: CF-Talk
Subject: RE: SQL Query problem

At 11:08 AM 8/18/2004, you wrote:
>OK, you asked for it :o)  -- the select statement was my latest try at
>retrieving just the highest numbered transaction ID and corresponding data
>for each member.  FYI - the filtering statements are only invoked after
>someone does a new search from a form.  The inital results, which is what I
>am after, uses the <cfcase value = "all fields">.  The default
URL.sortorder
>is "M.lastname" and URL.sortDir is "ASC".
>
>
>Thanks for helping me with this.

Can you post the actual, parsed SQL that is being executed against your DB?

This will be a little easier to troubleshoot with all of the variables and
such filled in...

Thanks!

--
Ale
  _____
[Todays Threads] [This Message] [Subscription] [Fast Unsubscribe] [User Settings] [Donations and Support]

Reply via email to