webForumDet fria alternativet

Nivåer och Grupper i en select.

Databaser & SQL

4 svar · 478 visningar · startad av MickeA.com

Medlem sedan feb. 20034 441 inlägg
Frågan#1

Tjena
Ska försöka åstadkomma en selectlista, innehållandes nivåer + grupper i simskoleverksamhet.
Jag har två tabeller till det här, en med nivåer och en med grupper.
Nu ska jag presentera alla nivåer + grupper i en selectruta, sorterat på ett litet spec. sätt, nämligen såhär:

[b]2006[/b]
     Nivå 1
          Grupp 1
          Grupp 2
          Grupp 3        
     Nivå 2
          Grupp 1
          Grupp 2
          Grupp 3        
[b]2005[/b]
     Nivå 1
          Grupp 1
          Grupp 2
          Grupp 3        
     Nivå 2
          Grupp 1
          Grupp 2
          Grupp 3

Tabellerna ser ut såhär:

[i]tbl_sSchool_levels[/i]
lId => ID
iName => Nivånamn

[i]tbl_sSchool_groups[/i]
gId => GruppID
lId => Nivå-Tillhörighet
gName => Gruppnamn
gStartDate => Startdatum för grupp [i]xxxx-xx-xx[/i]

Mitt problem nu är att jag inte kan få detta formaterat som jag vill.
Jag vill alltså att resultatet ska se ut som ovan i det här inlägget.
Har försökt med diverse sätt men får det inte sorterat schysst, den skiter i vad gStartDate innehåller.
Saken är den att det kan ligga 20st grupper under samma nivå, fast 10 av dessa grupper kan pågå under 2005 och 10 av dom 2006.

Vore himla tacksam för all hjälp jag kan få med det här, har kört fast.

Tack!

/ r Kan tillägga att jag använder ASP och ACCESS

Medlem sedan dec. 200012 464 inlägg
#2

Jag visar principen så får du bättra på formateringen

q = "select year(gStartDate) as ar, iname, gname "  & _
    " from tbl_sSchool_levels sl inner join tbl_sSchool_groups sg " & _
    " on sl.lid = sg.lid " & _
    " order by 1 desc,2 "
set rs = connect.execute(q)
ar = 0
iname = ""
while not rs.eof
   if  ar <> cint(rs("ar") then
       ar = cint(rs("ar"))
       response.write ar & "<br>"
       iname = ""
   end if
   if  iname <> rs("iname") then
       iname = rs("iname")
       response.write iname & "<br>"
   end if
   response.write rs("gname")
   rs.movenext
wend
Medlem sedan feb. 20034 441 inlägg
#3

Vad najs!
Det ser ruggigt bra ut.
Har testkört lite nu och det ser ut precis som jag vill.

TackTack!

Medlem sedan feb. 20034 441 inlägg
#4

Nytt problem med samma kod

Tjena
Nu har jag gjort om ovanstående kod en aning för att sortera upp samma grupper / nivåer på en vanlig sida.
Problemet den här gången är att jag vill sortera efter ytterliggare en sak, nämligen månad.

Det är så att dom här grupperna startar vid fyra olika tillfällen varje år, så jag skulle vilja att resultatet såg ut såhär:

2006-01
   Baddaren
       Grupp 1
       Grupp 2
       Grupp 3
   Grodan
       Grupp 1
       Grupp 2

2006-03
   Baddaren
       Grupp 1
   Grodan
       Grupp 1
       Grupp 2
       Grupp 3
osv...

Koden jag har gjort iordning ser ut som följer:

	q =	"SELECT YEAR(gStartDate) AS ar, lName, gId, gName, gDayTime, gStartDate "  &_
		"FROM tbl_sSchool_levels sl INNER JOIN tbl_sSchool_groups sg " &_
		"ON sl.lId = sg.lId " &_
		"WHERE sl.lType = " & intType & " " &_
		"ORDER BY 1 DESC, sl.sOrder ASC, 2"
	Set rs = oConn.Execute(q)
	ar = 0
	iName = ""
	cG = 0
	fP = 0
	While Not rs.EOF
		If  ar <> cInt(rs("ar")) Then
			ar = cInt(rs("ar"))
			Response.Write(	"<tr>" & VbCrLf &_
					"<td colspan=""2"" class=""bTxt"" style=""font-size: 10pt; font-weight: bold; padding: 2px; padding-top: 10px;"">" &_
					ar &_
					"</td>" & VbCrLf &_
					"</tr>" & VbCrLf)
		   iName = ""
		End If
		If  iName <> rs("lName") Then
		iName = rs("lName")

		 Response.Write("<tr>" & VbCrLf &_
				"<td colspan=""2"" class=""bTxt"" style=""font-size: 10pt; font-weight: bold; padding: 2px; padding-top: 10px;"">" &_
				fLT(rs("lName"), 20) &_
				"</td>" & VbCrLf &_
				"</tr>" & VbCrLf)
		End If
		Response.Write(	"<tr>" & VbCrLf &_
				"<td class=""bTxt"" style=""padding-left: 0px; width: 14px; vertical-align: top;"">" &_
				"<img src=""pics/rDott.gif"" style=""border: 0px;"" alt="""">" &_
				"</td>" & VbCrLf &_
				"<td class=""bTxt"" style=""text-align: left; padding-left: 5px;"">" &_
				"<form name=""g_" & rs("gId") & """ action=""default.asp?mP=sSchool&amp;sP=" & Request.Querystring("sP") & """ method=""post"" style=""margin: 0px;"">" & VbCrLf &_
				"<input type=""hidden"" name=""gId"" value=""" & rs("gId") & """>" & VbCrLf &_
				"<a href=""#"" onclick=""document.g_" & rs("gId") & ".submit(); return false;"" class=""rLink"">" & fLT(rs("gName"), 16) &	"</a>" &_
				"</form>" & VbCrLf &_
				"</td>" & VbCrLf &_
				"</tr>" & VbCrLf)
		rs.MoveNext
		foo = 1
	Wend

Hur ska frågan / koden ändras för att det ska se ut så som jag vill ha det?
Tack på förhand!

Medlem sedan feb. 20034 441 inlägg
#5

Nu har jag kommit en bra bit på vägen, fast det blir lite fel vid utskriften.
Såhär ser frågan ut:

	q =	"SELECT YEAR(gStartDate) AS ar, MONTH(gStartDate) AS man, lName, gId, gName, gDayTime, gStartDate "  &_
		"FROM tbl_sSchool_levels sl INNER JOIN tbl_sSchool_groups sg " &_
		"ON sl.lId = sg.lId " &_
		"WHERE sl.lType = " & intType & " " &_
		"ORDER BY 1 DESC, sl.sORDER ASC"

Resultatet blir av någon anledning det här:

januari 2006
   Baddaren
     Måndag 16.00
     Tisdag 16.45
     Söndag 17.10
mars 2006
   Baddaren
     Testgruppen
januari 2006
   Baddaren forts
     Torsdag 16.00
     Söndag 16.45

Den ska ju visa "Mars 2006" före "Januari 2006", vilket den inte gör.
Får inte till det alls, provat massor av olika sätt att sortera, men det blir bara fel.
Skulle verkligen behöva lite assistans med det här för att få sista biten på plats.

Tack!

266 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)