Hejsan! Titta lite på join i sql, det är precis vad du letar efter! :) Har kollat. Kom fram till att: Hej Korkad lösning? två recordset
För att få olika färg på "lästa länkar" krävs inloggning som sedan lägger till användarId och textId i en tabell varje gång en nyhet läses.
Varje länk loopar igenom tabellen för att se om id:t finns. Sidan innehåller ca 25 länkar och tabellen kommer förmodligen att krypa upp emot 5000 poster innan jag tömmer den. Nu är frågan om min kod är förkastlig ur prestandasynvinkel?
Tacksam för synpunkter!
/mvh Max
<code>
<%
userId = Session("userId")
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("\db\db1.mdb")
Set RecSet = Server.CreateObject("ADODB.Recordset")
Set RecSet2 = Server.CreateObject("ADODB.Recordset")
SQL = "qNyhetGrupp1 '" & datum & "'"
RecSet.Open SQL
do until RecSet.eof
set rubrik = Recset("rubrik")
set ID = RecSet("textID")
'stämmer av mot lästa länkar-tabellen
SQL = "q_Lasta_Nyheter_ensk '" & userId & "', " _
& "'" & ID & "'"
RecSet2.Open SQL, Conn
do until RecSet2.EOF
finns = RecSet2("textId")
RecSet2.MoveNext
loop
RecSet2.close
%>
<li>
<%
if finns = ID then
response.write(rubrik)
Else
response.write("" & rubrik & "")
End If%>
<%
RecSet.MoveNext
loop
end if
RecSet.Close%>
</a>
</code>Sv: Korkad lösning? två recordset
Sv: Korkad lösning? två recordset
<code>
SELECT TOP 5 [tNyheter].[textID], [tNyheter].[rubrik], [t_Lasta_Lankar].[anvId], [tNyhetsDel].[delId]
FROM tNyhetsDel INNER JOIN (tNyheter INNER JOIN t_Lasta_Lankar ON [tNyheter].[textID]=[t_Lasta_Lankar].[textId]) ON [tNyhetsDel].[delId]=[tNyheter].[del]
WHERE ((([tNyheter].[textID])=[t_Lasta_Lankar.textId]) And (([t_Lasta_Lankar].[anvId])=["anvandare"]) And (([tNyhetsDel].[delId])=["del"]))
</code>
plockar fram de 5 översta nyheterna
- från rätt nyhetsdel
- som är lästa av den användaren som är inloggad
Men hur använder jag inner join för att blanda både lästa och olästa och sedan skilja ut dem med färg? Kommer inte längre med min tröga hjärna...
mvh MaxSv: Korkad lösning? två recordset
Nu har jag kommit fram till en lösning som jag tror är effektiv.
Kommentarer mottages varmt.
<code>
<%
'Hämta både lästa och olästa 5 översta nyheter från rätt nyhetsgrupp
SQL = "Select TOP 5 del, rubrik, textID, datum from tNyheter where del = 3"
RecSet.open SQL
if not RecSet.EOF then
arr1 = RecSet.GetRows()
RecSet.close
For i = 0 TO uBound(arr1,2)
del=arr1(0,i)
rubrik=arr1(1,i)
textId=arr1(2,i)
response.write("</font><li> & ">")
'Hämta lästa nyheter ur gruppen
SQL = "SELECT TOP 5 *
FROM tNyhetsDel INNER JOIN (tNyheter INNER JOIN
t_Lasta_Lankar ON [tNyheter].[textID]=[t_Lasta_Lankar].
[textId]) ON [tNyhetsDel].[delId]=[tNyheter].[del]_
WHERE ((([tNyheter].[textID])=[t_Lasta_Lankar.textId]) And
(([t_Lasta_Lankar].[anvId])=["anvandare"]) And (([tNyhetsDel].
[delId])=["del"]))"
RecSet.Open SQL
if not RecSet.EOF then
arr2 = RecSet.GetRows()
RecSet.Close
For x = 0 TO uBound(arr2,2)
last=arr2(0,x)
if textId = last then
response.write("")
end if
next
else RecSet.close
end if
response.write(rubrik & "
")
next
else
RecSet.close
end if
%>
</code>
mvh Max