Avatar billede pcl Nybegynder
29. oktober 2001 - 10:15 Der er 9 kommentarer og
1 løsning

Select i db

Jeg har lidt problemer med en select, jeg håber at der er nogen der kan hjælpe.


Først vælge jeg de records der er lig med Request ID.

ddSQL = \"SELECT * FROM TABEL1 WHERE ID = \'\" & Request(\"id\") & \"\'\"
SET rs1 = conForhandler.Execute(ddSQL)

Der er gnuffer omk. Request ID, da det er af typen uniqueidentifier.
Herefter er det problemmerne opstår.


fra samme tabel, skal jeg finde alle de records som har det samme i feltet \"forhandlerid\", som den record jeg netop har fundet i ovenstående select.
Jeg har prøvet følgende , men det virker vist ikke rigtigt.


ttSQL = \"SELECT * FROM TABEL1 WHERE forhandlerid = \'\" & rs1(\"forhandlerid\") & \"\'\"
SET rs2 = conForhandler.Execute(ttSQL)

herefter skal jeg vise alle records fra en anden tabel, hvor feltet \"ID\" er lig med dette felt \"C_ID\"
fra ovenstående select.

strSQL = \"SELECT * FROM TABEL2 WHERE ID = \" & rs2(\"C_ID\")
SET rs3 = conForhandler.Execute(strSQL)

Do until rs3.Eof
response.write rs3(\"id\") & \"<br>\"
rs3.movenext
loop


Problemmet er at jeg ikke vise en samlet record fra rs3, med de records som er opfanget i rs2.

HJÆLP!!!!!!!!!!!!!!!!

Avatar billede goz Nybegynder
29. oktober 2001 - 10:26 #1
prøv at hente det i et hug ved at joine tabellerne :
SELECT t1.id, t1.navn, t2.bla, t2.blabla FROM TABEL1 t1,TABEL2 t2 WHERE t1.ID = \'\" & Request(\"id\") & \"\'\" and t1.c_id=t2.id;

mvh goz
Avatar billede pcl Nybegynder
29. oktober 2001 - 10:29 #2
det kan jeg faktisk ikke fordi at de dat der ligger i select (rs1 og rs2) ligger på én server og de andre dat dem i select (rs3) ligger et andet sted i danmark på en anden server.
Avatar billede pcl Nybegynder
29. oktober 2001 - 10:36 #3
Problemmet er nok egentlig den sidste select:

strSQL = \"SELECT * FROM TABEL2 WHERE ID = \" & rs2(\"C_ID\")
SET rs3 = conForhandler.Execute(strSQL)

i denne kan rs2(\"C_ID\") antage flere end en værdi.

det er det jeg ikke ved hvorledes jeg skal gribe an.
Avatar billede pcl Nybegynder
29. oktober 2001 - 10:37 #4
Men jeg vil gerne have resultatet fra rs3 ud i en samlet select.
Avatar billede goz Nybegynder
29. oktober 2001 - 10:38 #5
er du connectet til den rigtige database ?
Har du noget kode inden du henter rs3 som ændrer conForhandler?
Avatar billede pcl Nybegynder
29. oktober 2001 - 10:39 #6
yes, connectionen hedder faktisk ikke conForhandler i rs3. den hedder bare conn.
så det er ikke det der er problemmet
Avatar billede goz Nybegynder
29. oktober 2001 - 10:48 #7
rs2 peger kun på en ad gangen hvis man skal have dem alle må loope igennem dem alle, hvis man da ikke kan joine):

Do until rs2.Eof
    strSQL = \"SELECT * FROM TABEL2 WHERE ID = \" & rs2(\"C_ID\")
    SET rs3 = conForhandler.Execute(strSQL)

    Do until rs3.Eof
        response.write rs3(\"id\") & \"<br>\"
        rs3.movenext
    loop
    rs2.movenext
loop
Avatar billede goz Nybegynder
29. oktober 2001 - 10:50 #8
hov. conForhandler skulle selvfølgelig være conn :-)
Avatar billede eagleeye Praktikant
29. oktober 2001 - 12:18 #9
Jeg ville lave en komma streng med alle de C_ID\'er som skal bruges til at lave recordset3:

C_ID_str = rs2(\"C_ID\")
rs2.movenext
do while not rs2.eof
  C_ID_str = C_ID_str & \",\" & rs2(\"C_ID\")
  rs2.movenext
loop

\'Så har du en liste med alle C_ID\'erne:
strSQL = \"SELECT * FROM TABEL2 WHERE ID IN (\" & C_ID_str & \");\"
SET rs3 = conForhandler.Execute(strSQL)
Do until rs3.Eof
  response.write rs3(\"id\") & \"<br>\"
  rs3.movenext
loop
Avatar billede pcl Nybegynder
29. oktober 2001 - 13:13 #10
tak for hjælpen begge 2, specielt tak til eagleeye
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