Avatar of nicky2k
nicky2k
Flag for United Kingdom of Great Britain and Northern Ireland

asked on 

Tricky one about a query

I have a table, which adds a record and stores the date added and the time added. This means that every time my page refreshes, I can have more than one record per day. What I want to do is display the first record found for the day, regardless of what time it is, so that I am not displayign the records more than once per day. Sounds simple?
I tried creating another query that gets just the date and the time, comparing with the original query (looping twice over each query object) and trying to display the records where the time is different. Did not work.
In the loop described earlier, in the if statement, I tried running another query, looping over that, and just adding records WHERE rownum=1. Did not work.
Help please!!
<cfcomponent output="false">
 
	<cfscript>
	//returns a name for when the client access occured, relative to today
	//Will name each day of the current week, then by week number	
	function getSectionName(daysPast){
		var access_date = DateAdd("d",-arguments.daysPast,now());
		
		//var WeeksAgo=DateDiff("ww",access_date,now());
		var WeeksAgo=DatePart("ww",now()) - DatePart("ww",access_date);
	
		if(daysPast GTE 30){
			return "Older";
		}
		if (WeeksAgo GT 1){
			return "#WeeksAgo# Weeks Ago";
		}
		if (WeeksAgo EQ 1){
			return "#WeeksAgo# Week Ago";
		}	
		if (daysPast NEQ 0){
			return DayOfWeekAsString(DayOfWeek(access_date)) & " " & WeeksAgo;
		}
		if(daysPast EQ 0){
			return "Today";
		}
		
		return "Unknown";
	}
	</cfscript>
 
	<cffunction name="getRecentSubjectsHTML">
		<cfargument name="user_id">
		<cfset var recents = getRecentSubjectsRecordSet(arguments.user_id)>
		
		<cfsavecontent variable="rsuHTML">
		<ul class="TreeRoot">
		<cfoutput query="recents" group="section_name">
			<cfif recents.section_name neq "">
			<li class="TreeBranch" id="#recents.section_id#">
				<a href="javascript:treeToggle('#recents.section_id#')">
				#recents.section_name#
				</a>
				<ul class="RecentList">
					<cfoutput>
					<cfif rsu_access_date neq "">	
						<li class="#recents.subject_type_name#">
							<a 
								href="javascript:selectSubject('#recents.rsu_subject_ind#','#recents.rsu_subject_id#');"
								title="Accessed at #TimeFormat(recents.rsu_access_time,"HH:MM")# on #DateFormat(recents.rsu_access_date,"DD/MMM/YY")#"	
							>
							<cfif recents.subject_type_name EQ "Organisation">
								<img src="/cfi/application_store/skins/style/default/images/icon_org.gif">
							<cfelse>
								<img src="/cfi/application_store/skins/style/default/images/icon_person.gif">
							</cfif>						
							#recents.subject_name# (#recents.rsu_subject_id#)
							</a>
						</li>
					</cfif>
					</cfoutput>
				</ul>			
			</li>
			</cfif>
		</cfoutput>
		</ul>
		</cfsavecontent>
		<cfreturn rsuHTML />
	</cffunction>
	
	<cffunction name="getRecentSubjectsRecordSet">
		<cfargument name="user_id">
		<cfargument name="order" required="false" default="ASC">
		<cfset var sectionName="">
		<cfset var sectionNames=ArrayNew(1)>	
		<cfset var sectionIDs=ArrayNew(1)>
		<cfset var recents="">
		<cfset var tempQuery=QueryNew("rsu_subject_id,days_past,subject_type_name,subject_name,rsu_subject_ind,rsu_access_date,rsu_access_time")>
		<!--- <cfset var newQuery=QueryNew("section_id,section_name,rsu_subject_id,days_past,subject_type_name,subject_name,rsu_subject_ind,rsu_access_date,rsu_access_time")> --->
		
		<cfquery name="getAccessTime" datasource="#application.db.dsn#">
			SELECT  
				rsu_access_time,rsu_access_date 			
			FROM 
				 o_recent_subjects
			WHERE
				 rsu_user_id = <cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.user_id#">
		</cfquery>
		
		<cfquery name="getAccessTime1" datasource="#application.db.dsn#">
			SELECT  
				   rsu_access_time,rsu_access_date 			
			FROM 
				   o_recent_subjects
			WHERE
				   rsu_user_id = <cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.user_id#">
			AND  
				   rownum = 1
		</cfquery>
		
		<!--- Now run the main query itself --->
		<cfquery name="recents" datasource="#application.db.dsn#">
			SELECT 
				   rsu_subject_id,
				   rsu_subject_ind,
				   rsu_access_time,
				   rsu_access_date,
				   TRUNC(SYSDATE) - rsu_access_date AS days_past,
				   DECODE(rsu_subject_ind,
				   'O',cfi_person_org.return_oun_name(rsu_subject_id),
				   'P',cfi_person_org.return_per_name(rsu_subject_id),
				   'Unknown') subject_name,
				   DECODE(rsu_subject_ind,
				   'O','Organisation',
				   'P','Person') subject_type_name				   
			FROM 
				   o_recent_subjects
			WHERE
				   rsu_user_id = <cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.user_id#">
			ORDER BY 
				   rsu_access_date #arguments.order#
		</cfquery>
		
		<!--- <cfset newRow = QueryAddRow(tempQuery,#recents.recordcount#) />  --->
	
		<!--- Calculate the section names and add them as a new column --->
		<cfoutput query="recents" group="rsu_access_date">
			<cfset sectionName = getSectionName(recents.days_past)>
			<cfset ArrayAppend(sectionNames,sectionName)>
			<cfset ArrayAppend(sectionIDs,Replace(sectionName," ","_","ALL"))>
			
			<!--- <cfset QuerySetCell(tempQuery,"rsu_subject_id",#recents.rsu_subject_id#,#recents.currentrow#)>
			<cfset QuerySetCell(tempQuery,"rsu_subject_ind",#recents.rsu_subject_ind#,#recents.currentrow#)>
			<cfset QuerySetCell(tempQuery,"days_past",#recents.days_past#,#recents.currentrow#)>
			<cfset QuerySetCell(tempQuery,"subject_type_name",#recents.subject_type_name#,#recents.currentrow#)>
			<cfset QuerySetCell(tempQuery,"subject_name",#recents.subject_name#,#recents.currentrow#)>  --->
	
		</cfoutput>
		
		
	
		<!--- <cfset QueryAddColumn(tempQuery,"section_name",sectionNames)>
		<cfset QueryAddColumn(tempQuery,"section_id",sectionIDs)>  --->
		
		
		<cfset QueryAddColumn(recents,"section_name",sectionNames)>
		<cfset QueryAddColumn(recents,"section_id",sectionIDs)> 
		
		<cfreturn recents />   
		
		
		<!--- <cfdump var="#tempQuery#"><cfabort>
		<cfreturn tempQuery /> --->
	</cffunction>
	
</cfcomponent>

Open in new window

Web Servers

Avatar of undefined
Last Comment
nicky2k

8/22/2022 - Mon