webForumDet fria alternativet

Strul med select sats

ASP

6 svar · 287 visningar · startad av G8

Medlem sedan jan. 20011 213 inlägg
Frågan#1

Jag har tre tabeller i en MySQL databas, där jag ska köra en sökning för att kunna lista resultatet.

Tabell "Region"
ID
namn

Tabell "Klubbar"
ID
Namn
region
idrott
poang

Tabell "Idrott"
ID
Namn

Det jag vill göra är att jag vill lista alla idrotter i varje enskilld region där det finns en klubb, samt visa den klubb med mest poäng i varje idrott i resp. region.

För tillfället ser mina selectsatser ut så här:

stm = "SELECT idrott.id AS idrottsid, idrott.namn AS idrottsnamn " &_
" ORDER BY idrott.region, idrott.namn asc"
set rs1 = Connection.Execute(stm)
%>
                          <tr> 
                            <td width="150" height="20">&nbsp; Idrott</td>
                            <td width="194" align="center">#1</td>
                            <td width="53" align="center">Region</td>
                          </tr>
                          <%
Do until rs1.eof
stm2 = "SELECT klubbar.id AS klubbid, klubbar.namn AS klubbnamn, " &_ 
" klubbar.poang, region.namn FROM klubbar INNER JOIN region " &_
" ON klubbar.region = region.id WHERE " &_ 
" klubbar.idrotts ="& rs1("idrottsid") &"ORDER BY klubbar.poang desc"
set rs2 = Connection.Execute(stm2)

Jag vill alltså på en och samma sida, visa t.ex. överst region Småland och alla de idrotter som finns registrerade i småland, samt för varje idrott visa vilken klubb som har mest poäng i just den idrotten.

Efter Småland kommer nästa region, och där visas samma information, fast för den regionen givetvis...

Nån som fattar?

//G8

Medlem sedan dec. 200012 464 inlägg
#2
q1 = "select max(poang),region,idrott from klubbar " & _
         " group by region,idrott" & _
       "order by region, idrott
set rs1 = connection.execute(q1)
while not rs1.eof
    q2 = "SELECT klubbar.id AS klubbid, klubbar.namn AS klubbnamn, " &_ 
" klubbar.poang, region.namn as regionnamn, " & _
" idrott.namn as idrotts namn " & _
" FROM klubbar INNER JOIN region " &_
" ON klubbar.region = region.id  " & _
" inner join idrott on klubbar.idrott = idrott.id " & _
" WHERE  klubbar.idrott ="& rs1("idrott") & _
" and klubbar.region = " & rs1("region") & _
" and kkubbar.poang = " & rs1(0)

Skulle egentligen gå med en fråga om mysql hade stöd för subselect.

Medlem sedan jan. 20011 213 inlägg
#3

:)

Tack LarsG, som alltid

Hinner inte kolla mer på det nu, skallen känns som gröt och jag ska upp i ottan och jobba imorgon..

Ska kolla på det när jag kommer hem

//G8

Medlem sedan jan. 20011 213 inlägg
#4

hmm, får felmeddelande:

ADODB.Field fel '80020009'

Antingen är BOF eller EOF satt till True, eller så har aktuell post raderats. Den begärda åtgärden kräver en aktuell post.

?

Inte riktigt säker på vilken rad den pekar på, men jag antar att det har att göra med att inte alla regioner har någon idrott knuten till sig ännu... nått sätt att gå runt det?

//G8

Medlem sedan feb. 20022 594 inlägg
#5

Får man se hela koden? :)

Medlem sedan jan. 20011 213 inlägg
#6

:)

Givetvis får du se lite kod, delar alltid med mig av mina misstag ;)

<%
set connection = Server.CreateObject("ADODB.Connection")
Connection.Open "databasen"
count = 1

q1 = "select max(klubbar.poang), klubbar.region, klubbar.idrottsid from klubbar " & _
         " group by region,idrottsid" & _
       " order by klubbar.region, klubbar.idrottsid"
set rs1 = connection.execute(q1)
%>
                          <tr> 
                            <td width="150" height="20">_ Sport</td>
                            <td width="194" align="center">Ledare</td>
                            <td width="53" align="center">Region</td>
                            <td width="42" align="center">Registrerade klubbar</td>
                            <td width="59" align="center">Aktiv?</td>
                          </tr>
                          <%
while not rs1.eof
q2 = "SELECT klubbar.id AS klubbid, klubbar.namn AS klubbnamn, " &_ 
" klubbar.poang, region.namn as regionsnamn, " & _
" idrotter.namn as idrottnamn, idrotter.antal_klubbar, idrotter.senaste_matchen " & _
" FROM klubbar INNER JOIN region " &_
" ON klubbar.region = region.id  " & _
" inner join idrotter on klubbar.idrottsid = idrotter.id " & _
" WHERE  klubbar.idrottsid ="& rs1("idrottsid") & _
" and klubbar.region = " & rs1("region") & _
" and klubbar.poang = " & rs1(0)
set rs2 = Connection.Execute(q2)

	'##lite kod för att växelvis ändra färg på cellerna i tabellen
	if count idrott 2 = 0 then
	bgcolor = "#9AACBE"
	else
	bgcolor = "#BDC9D5"
	end if
%>
                          <tr><%if rs2.eof then%>
						  <td bgcolor="<%=bgcolor%>"><img src="images/<%=rs2("idrottsnamn")%>.gif" alt=" <%=rs2("idrottsnamn")%> " width="150" height="13" border="0"></td>
                            <td align="center" bgcolor="<%=bgcolor%>">Inga klubbar registrerade</td>
                            <td align="center" bgcolor="<%=bgcolor%>"><img src="images/flags/na.gif" alt=" N/A " width="14" height="12"></td>
                            <td align="center" bgcolor="<%=bgcolor%>">0</td>
                            <td align="center" bgcolor="<%=bgcolor%>"><img src="images/no.gif" alt=" NEJ " width="23" height="13" border="0"></td>
							<%else%>
                            <td bgcolor="<%=bgcolor%>"><a href="sporter.asp?SID=<%=rs2("idrottsid")%>&idrott=<%=SERVER.URLEncode(rs2("idrottsnamn"))%>"><img src="images/<%=rs2("idrottsnamn")%>.gif" alt=" <%=rs2("idrottsnamn")%> " width="150" height="13" border="0"></a></td>
                            <td align="center" bgcolor="<%=bgcolor%>"><a href="klubbinfo.asp?klubbid=<%=rs1("klubbid")%>"><%=rs1("klubbnamn")%></a></td>
                            <td align="center" bgcolor="<%=bgcolor%>"><img src="images/flags/<%=rs2("regionsnamn")%>.gif" alt=" <%=rs2("regionsnamn")%> " width="14" height="12"></td>
                            <td align="center" bgcolor="<%=bgcolor%>"><%=rs2("antal_klubbar")%></td>
                            <td align="center" bgcolor="<%=bgcolor%>"> 
                              <%
							Datum = DateDiff("d", Date, rs2("senaste_matchen"))
							if CINT(datum) >= -21 then
							response.write("<img src=" & "images/yes.gif" & " " & "alt=" & " JA " & " " & "width=" & "23" & " " & "height=" & "13" & " " & "border=" & "0" & ">")
							else
							response.write("<img src=" & "images/no.gif" & " " & "alt=" & " NEJ " & " " & "width=" & "23" & " " & "height=" & "13" & " " & "border=" & "0" & ">")
							end if
							%></td><%end if%>
                          </tr>
                          <%
count = count + 1
rs1.MoveNext
Rs2.Close
set rs2 = Nothing
wend
Rs1.Close
set rs1 = Nothing
Connection.close
Set connection = Nothing
%>

//G8

Medlem sedan jan. 20011 213 inlägg
#7

ingen som vet?

266 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
117 ms — ändringar (db)