Avatar billede nitz Nybegynder
17. april 2003 - 20:43 Der er 6 kommentarer og
3 løsninger

Anden sql afhængig af første

Hej Alle,

Jeg har lavet et forum hvor emnerne bliver oprettet i en tabel og svarene bliver oprettet i en anden tabel.

Jeg viser en liste over de nyeste emner, men vil nu også gerne have sat dato på for nyeste svar (der bliver registreret dato osv allerede).

Men hvordan gør jeg det? Jeg gør pt sådan i emne-tabellen:
select * from emnetabel where opretdato > date() - 7

Jeg går udfra at nr. 2 sql skal være således:

select * from svartabel where emneid = .....

Hvordan får jeg hevet den rigtige id ned i sql 2?

Håber det giver mening.

Med venlig hilsen

Tommy
Avatar billede Slettet bruger
17. april 2003 - 21:11 #1
Kun et skud fra hoften:
select * from svartabel where emneid = (select emneid from emnetabel where opretdato > date() - 7)
Avatar billede madrich Nybegynder
17. april 2003 - 21:29 #2
hvis "emneID" 'et er i begge tabeller, kan du klare det i et select.

ex :

strSqlSvarTabel = "select * from svartabel where emneId = "& RS("emneId")
Avatar billede nitz Nybegynder
17. april 2003 - 21:34 #3
Madrich,

Problemet er at jeg looper igennem den første sql, så det vil sige at id'en vil ændre sig.
Avatar billede Slettet bruger
17. april 2003 - 21:40 #4
Kan du ikke poste din nuværende kode, bare den del du her vil have hjælp til?
Avatar billede madrich Nybegynder
17. april 2003 - 21:43 #5
man kan gøre det med et "outer join" i ét select (den pæne måde)

eller man kan placere sql no 2 inde i din do / loop løkke
Avatar billede madrich Nybegynder
17. april 2003 - 21:48 #6
strSqlEmne = "select * from emnetabel ...
set rsEmne = conn.execute(strSqlEmne)
do while not rsEmne.EOF
strSqlSvar = "select * from svarTabel where emneId = "& rsEmne("emneId")
set rsSvar = conne.execute(strSqlSvar)

osv.


rsEmne.movenext
Loop
rsEmne.close
set rsEmne = nothing
Avatar billede cesil Nybegynder
17. april 2003 - 21:54 #7
sql = "select * from emnetabel"
Set rs = Conn.Execute(sql)
do while rs.eof=false

Set oRs = oConn.Execute("SELECT * FROM svartabel WHERE emnetableID = " & rs("id"))
do while oRs.eof=false
'
oRs.movenext
loop


rs.movenext
loop

For at det kan lade sig gøre skal du selvfølgelig gemme emneid i for hvert svar.
Avatar billede hossein Nybegynder
17. april 2003 - 23:34 #8
Det kan løses på den måde, her har jeg brugt et querystring for at vælge den tilhørende spørgsmål og dermed svar men det kommer an på hvordan du har tilrettet dine sider (måske du ikke har brug for den)
<%
'begynd main loop

set RS = Conn.Execute("SELECT * FROM [Emne] WHERE [ID]=" & request.querystring("ID") & "")
if not RS.EOF then
    RS.movefirst
    do
        response.write "<b>"  & rs("Emne) & "</b><p>" & chr(13)
        'Nu udskriver du Svarene
        set ORS = Conn.Execute("SELECT * FROM [EvarTabel] WHERE [SvarID]=" & RS("svarID") ) ' Her sættes ID'erne fra begge tabeller lig med hinden
        if not ORS.EOF then
            ORS.movefirst
            do
                response.write bla bla bla        'udskriv det som du vil både RS og PRS kan benyttes
                ORS.movenext
            loop until ORS.EOF
        end if
        response.write "<p>"
        RS.movenext
    loop until RS.EOF
end if
conn.close
%>
Avatar billede nitz Nybegynder
08. maj 2003 - 09:33 #9
Hej I må undskylde jeg først er vendt tilbage nu.

Jeg har ikke rigtigt kunne få det til at lykkedes, og jeg har desværre ikke helt tid til at blive ved med at bruge tid på det lige pt. Så jeg deler pointene ligeligt imellem Jer der har svaret, det håber jeg er i orden.

I skal have tak for Jeres tid :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester