webForumDet fria alternativet

Problem med DISTINCT fråga...

6 svar · 184 visningar · startad av Method

MethodMedlem sedan apr. 2001358 inlägg
#1

Jag har en databas med följande fält

nws_Rubrik - Sparar rubriken till nyheten
nws_Text - sparar texten till nyheten
nws_Date - Sparar datum och tid enl. Now tidsstämpel (YYYY-MM-DD HH:MM:SS)

och genom dena information vill jag generera en meny så man kan navigera sig genom de olika nyheterna och det vill jag ha på följande sätt:

Jan 2001
Feb 2001
Mars 2001
osv.. 2001

Jan 2002
Feb 2002
Mars 2002
osv..

och det gör jag på följande vis:

SELECT DISTINCT nws_Date FROM nyheter ORDER BY nws_Date ASC

men nu till själva problemet... tack vare att jag sparar med den tidsstämpeln så är varje ny post i databasen unik, men jag vill ju bara att den hämtar varje månad och år distinct så det inte blir att det blir flera dubletter av månaden i menyn, hur ska jag enklast lösa detta?

tack på förhand

LarsGMedlem sedan dec. 200012 465 inlägg
#2

Vilken databashanterare använder du?

Flyttas från ASP

MethodMedlem sedan apr. 2001358 inlägg
#3

Access 2000

LarsGMedlem sedan dec. 200012 465 inlägg
#4
SELECT DISTINCT month(nws_Date) as m, year(nws_date) as y
 FROM nyheter ORDER BY 2,1
MethodMedlem sedan apr. 2001358 inlägg
#5

SELECT DISTINCT month(nws_Date) as m, year(nws_Date) as y FROM nyheter ORDER BY 2, 1
ADODB.Recordset error '800a0cc1'

Item cannot be found in the collection corresponding to the requested name or ordinal.

 <%
	SQL = "SELECT DISTINCT month(nws_Date) as m, year(nws_Date) as y FROM nyheter ORDER BY 2, 1"
	Response.Write(sql)
	set rs = objConn.execute(sql)
	'Sätter variabeln på varannan rad grå
	Dim Farg
	Farg = "#E4E4E4"
	
	While Not rs.EOF
	dtmMonth = Month(rs("nws_Date"))
	
	Select Case dtmMonth
    	Case "1"     
    		strMonth = "Januari" 		
   		Case "2"  
    		strMonth = "Februari"			
   		Case "3"
		   	strMonth = "Mars"	
		Case "4"    
      		strMonth = "April"		
   		Case "5"   
      		strMonth = "Maj"			
   		Case "6"  
	   		strMonth = "Juni"		
		Case "7"     
      		strMonth = "Juli"		
   		Case "8"   
      		strMonth = "Augusti"			
   		Case "9"  
	   		strMonth = "September"		
		Case "10"     
       		strMonth = "Oktober"		
   		Case "11"   
      		strMonth = "November"			
   		Case "12"    
      		strMonth = "December"					
	End Select
	%>
	<tr>
		<td bgcolor="<%=Farg%>" valign="top" width="4"></td>
		<td bgcolor="<%=Farg%>" valign="top"><a href="index.asp?month=<%=Month(rs("nws_Date"))%>&year=<%=Year(rs("nws_Date"))%>" target="main_frame"><%=strMonth%>&nbsp;<%=Year(rs("nws_Date"))%></a></td>
	<tr>
	<%
	'Sätter varannan rad till grå
	If Farg = "#E4E4E4" Then
		Farg = ""
	Else
		Farg = "#E4E4E4"
	End If

	rs.MoveNext
	Wend
	rs.close
	%>
</table>
LarsGMedlem sedan dec. 200012 465 inlägg
#6

Fälten i recordsetet heter m och y och innehåller månad och år så du behöver inte använda month och year i ditt VB-script. Det finns en färdig funktion, monthname, för att ta fram namnet på en månad.

<%
	SQL = "SELECT DISTINCT month(nws_Date) as m, year(nws_Date) as y FROM nyheter ORDER BY 2, 1"
	Response.Write(sql)
	set rs = objConn.execute(sql)
	'Sätter variabeln på varannan rad grå
	Dim Farg
	Farg = "#E4E4E4"
	
	While Not rs.EOF
	strMonth = monthname(rs("m"))
	
	%>
	<tr>
		<td bgcolor="<%=Farg%>" valign="top" width="4"></td>
		<td bgcolor="<%=Farg%>" valign="top"><a href="index.asp?month=<%=rs("m"))%>&year=<%=rs("y")%>" target="main_frame"><%=strMonth%> <%=rs("y"))%></a></td>
	<tr>
	<%
	'Sätter varannan rad till grå
	If Farg = "#E4E4E4" Then
		Farg = ""
	Else
		Farg = "#E4E4E4"
	End If

	rs.MoveNext
	Wend
	rs.close
	%>
</table>
MethodMedlem sedan apr. 2001358 inlägg
#7

Funkar kanon, jag tackar o bugar för all hjälp

Genererad på 375 ms · cache AV · v20260730165559-full.f96bc7eb