webForumDet fria alternativet

j*vligt klurig SQL sats..

11 svar · 475 visningar · startad av Bosse168

Bosse168Medlem sedan nov. 20031 018 inlägg
#1

Kan man på något sätt hämta skribents namn och datumet ur en annan tabell i min nuvarande SQL sats? Alltså så jag slipper sätta en RecSet till i loopen

nuvarande:

SQL="SELECT c1.id,c1.namn,c1.beskriv,c2.id as subid,c2.namn as namn2,c2.beskriv as beskriv2,c2.inlagg as inlagg,c2.tradar as tradar FROM forum_cat c1 left join forum_cat c2 on c2.sub=c1.id where c1.sub=0 order by c1.namn,c2.namn"

Den jag vill få in:

"Select skribent,datum FROM forum_inlagg WHERE catID="& Rs("id") &" AND subID="& Rs("subid") &" ORDER BY datum DESC LIMIT 1"
LarsGMedlem sedan dec. 200012 464 inlägg
#2

Det är bara att lägga till ytterligare joinklausuler.

SELECT c1.id,c1.namn,c1.beskriv,c2.id as subid,
       c2.namn as namn2,c2.beskriv as beskriv2,
       c2.inlagg as inlagg,c2.tradar as tradar ,
       skribent,datum
FROM forum_cat c1 left join forum_cat c2 
on c2.sub=c1.id left join forum_inlagg
on cat_id = c1.id and subId = c2.id
where c1.sub=0 
order by datum,c1.namn,c2.namn
Bosse168Medlem sedan nov. 20031 018 inlägg
#3

Hur gör jag för att hämta ut skribent namnet och datumet?

SQL="SELECT c1.id,c1.namn,c1.beskriv,c2.id as subid, " & _
       "c2.namn as namn2,c2.beskriv as beskriv2, " & _
       "c2.inlagg as inlagg,c2.tradar as tradar , " & _
       "skribent,datum " & _
"FROM forum_cat c1 left join forum_cat c2  " & _
"on c2.sub=c1.id left join forum_inlagg " & _
"on catID = c1.id and subId = c2.id " & _
"where c1.sub=0  " & _
"order by datum,c1.namn,c2.namn"
PeeerMedlem sedan mars 20025 907 inlägg
#4

Precis som du gör för att hämta ut ex. beskrivningen eller subid't. typ rs("skribent") och rs("datum").

Bosse168Medlem sedan nov. 20031 018 inlägg
#5

Jag får inte ut någonting när jag använder rs("skribent")

Bosse168Medlem sedan nov. 20031 018 inlägg
#6

Det var inget.
Men nu har ett annat problem dykt upp när jag loopar ut allt och det inte finns några inlägg så får jag detta fel mess fast jag använder en IF sats.

fel meddelandet:
Microsoft VBScript runtime error '800a005e'

Invalid use of Null: 'Month(...)'

koden:

If Rs("datum")="" Then
Response.Write("-")
Else
Response.Write Day(Rs("datum")) & " " & MonthName(Month(Rs("datum")),True) &" kl "& FormatDateTime(Rs("datum"), 4) &"<br>"& Rs("skribent") &""
End If
solbulleMedlem sedan mars 20015 287 inlägg
#7

Fullösning:

If Rs("datum")&""="" Then

Den rätta lösningen lär vara att kolla om ditt RS innehåller inget eller null.

Bosse168Medlem sedan nov. 20031 018 inlägg
#8
If isNull(Rs("datum")) Then

löste d, tackar för hjälpen

Bosse168Medlem sedan nov. 20031 018 inlägg
#9

Nu märkte jag ett annat fel.
Om den hittar någon post i forum_inlagg så slutar den loopen....
Kanske ska ha med looparna.. ;)


Do until Rs.eof
%>

                      <tr> 
                        <td colspan="4" class="rubrik2" bgcolor="#EFEFEF">

<%=Rs("namn")%>

						</td>
                      </tr>
                      <tr> 
                        <td colspan="4" height="1" bgcolor="#CCCCCC"></td>
                      </tr>
<%

strNamn = rs("namn")
Do
  If rs.EOF Then Exit Do
  If rs("namn") <> strNamn Then Exit Do

%>

'--- lite kod

  rs.MoveNext
Loop

Loop
Bosse168Medlem sedan nov. 20031 018 inlägg
#10

Ingen som vet vad som stoppar loopen?

PeeerMedlem sedan mars 20025 907 inlägg
#11
 If rs("namn") <> strNamn Then Exit Do

Stoppar loopen om namnet ändras. Varför har du med den if-satsen?

Bosse168Medlem sedan nov. 20031 018 inlägg
#12

För först loopar jag ut huvudkategorins rubrik och sedan alla underkategorier tillhörande den. Men tror jag löste det genom att ta bort

datum,
135 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)