Jag lite funderingar kring MaxRecords som jag inte får att lira som jag vill . Recordsetet printas ut i en tabell prydligt med 3 kolumner så länge recordsetet grupperas (GROUP BY) med topcategory. OK, då frågar jag så härKnepig SQL fråga
Nedanstående kod fungerar utmärkt på det sättet att 5 poster från ena eller den andra tabellen skrivs.
Det jag vill är att skriva ut 5 poster från TC.topcategory och sedan alla poster från MC.middlecategory. Nu begränsas det av GROUP BY som förvisso hämtar ut 5 poster från TC.topcategory men bara 1 post från respektive MC.middlecategory istället för alla.
Samma resultat om jag använder LIMIT 5 (MySQL)
Optimalt vore även om det går att sätta en egen limit på antal middlecategory som skall hämtas
Nån som förstår vad jag menar ?
Det skall se ut så här:
------------------------------------
topcategory
middlecategory,middlecategory osv
topcategory
middlecategory,middlecategory,middlecategory osv
-----------------------------------
RS.MaxRecords=5
SQL = "SELECT DISTINCT TC.topcategory,MC.middlecategory "&_
"FROM tbtopcategory TC,tbmiddlecategory MC,tbconnectcategory CC "&_
"WHERE TC.topcategoryID = CC.topcategorylink "&_
"AND MC.tbmiddlecategoryID = CC.middlecategorylink " &_
"GROUP BY TC.topcategory ASC"
RS.Open SQL,Conn
Do While Not RS.EOF
TopCat = RS("topcategory")
If LastTopCat <> TopCat Then
Response.Write("<br>" & RS("topcategory") & "<br>")
LastTopCat = TopCat
End If
Response.Write(RS("middlecategory") & ",")
RS.MoveNext
Loop
mvh
TorbjörnJag utvecklar min fråga...
Eftersom gruppering är satt på topcategory så tas endast den första posten från (underkategorin) middlecategory med i recordsetet.
Tar jag bort (GROUP BY) så skrivs naturligtvis resten av middlecategory ut, MEN problemet som då uppstår (i min kod nedan) är att middlecategory ses som egna poster, INTE som en underkategori.
DETTA ÄR VAD JAG HOPPAS ÅSTADKOMMA:
| topcategory | topcategory | topcategory
middlecategory,middle.. middlecategory,middle.. middlecategory,middle..
------------------------------ -------------------------------- ----------------------------------
| topcategory | topcategory | topcategory
middlecategory,middle.. middlecategory,middle.. middlecategory,middle..
------------------------------ -------------------------------- ----------------------------------
| topcategory | topcategory | topcategory
middlecategory,middle.. middlecategory,middle.. middlecategory,middle..
------------------------------ -------------------------------- ----------------------------------
EXEMPELKOD:
SQL = "SELECT DISTINCT TC.topcategory,MC.middlecategory "&_
"FROM tbtopcategory TC,tbmiddlecategory MC,tbconnectcategory CC "&_
"WHERE TC.topcategoryID = CC.topcategorylink "&_
"AND MC.tbmiddlecategoryID = CC.middlecategorylink " &_
"GROUP BY TC.topcategory ASC"
RS.Open SQL,Conn
AntalKol = 3
Response.Write("<table width='570' border='1'>")
If Not RS.EOF then
Response.Write("</tr>")
Do Until RS.EOF
Response.Write("<tr>")
For i = 1 To AntalKol
If RS.EOF then
Response.Write("<td width='190'>xx</td>")
Else
Response.Write("<td width='190'>")
TopCat = RS("topcategory")
If LastTopCat <> TopCat Then
Response.Write(""&RS("topcategory") &"<br>")
LastTopCat = TopCat
End If
Response.Write(RS("middlecategory") &",")
Response.Write("</td>")
RS.MoveNext
End If
Next
Response.Write("</tr>")
Loop
Response.Write("</table>")
End If
RS.Close
%>
mvh
TorbjörnSv: Jag utvecklar min fråga...
Är det någon vet om en Array kan vara lösningen.
Något i stil med koden nedan. Denna skriver inte ut något, men visar hur jag tänkt.
<%
SQL = "SELECT DISTINCT TC.topcategory,MC.middlecategory "&_
"FROM tbtopcategory TC,tbmiddlecategory MC,tbconnectcategory CC "&_
"WHERE TC.topcategoryID = CC.topcategorylink "&_
"AND MC.tbmiddlecategoryID = CC.middlecategorylink " '&_
'"ORDER BY TC.topcategory ASC, MC.middlecategory ASC "
RS.Open SQL,Conn
'Set RS = Conn.Execute(SQL)
MiddleCatValues = RS.GetRows(,,Array("middlecategory"))
AntalKol = 3
Response.Write("<table width='570' border='1'>")
If Not RS.EOF then
Response.Write("</tr>")
Do Until RS.EOF
Response.Write("<tr>")
For i = 1 To AntalKol
If RS.EOF then
Response.Write("<td width='190'>xx</td>")
Else
Response.Write("<td width='190'>")
TopCat = RS("topcategory")
If LastTopCat <> TopCat Then
Response.Write(""&RS("topcategory") &"<br>")
LastTopCat = TopCat
End If
For iRowLoop = 0 to UBound(MiddleCatValues, 2)
For iColLoop = 0 to UBound(MiddleCatValues, 1)
Response.Write(MiddleCatValues(iColLoop, iRowLoop))
Next
Response.Write("</td>")
Next
RS.MoveNext
End If
Next
Response.Write("</tr>")
Loop
Response.Write("</table>")
End If
RS.Close
%>