webForumDet fria alternativet

j*vligt klurig SQL sats..

Databaser & SQL

11 svar · 475 visningar · startad av Bosse168

Medlem sedan nov. 20031 018 inlägg
Frågan#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"
Medlem 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
Medlem 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"
Medlem 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").

Medlem sedan nov. 20031 018 inlägg
#5

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

Medlem 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
Medlem 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.

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

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

Medlem 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
Medlem sedan nov. 20031 018 inlägg
#10

Ingen som vet vad som stoppar loopen?

Medlem 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?

Medlem 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,
314 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
147 ms — deklarationer (db)
0 ms — hämta statistik (cache)
162 ms — hämta tråd, inlägg och bilagor (db)
149 ms — ändringar (db)