Avatar billede rookie Nybegynder
02. juni 2000 - 10:38 Der er 30 kommentarer og
2 løsninger

To select-sætninger i samme SQL???

Kan man lave 2 SELECT-sætninger i samme SQL-sætning?

Like this:

sql = "SELECT * FROM  [Rekvirenter] WHERE Rekvirenter.ID =" & CStr(Request("ID"))  AND WHERE Bruger.Navn =" & CStr(Session("UserName"))

Jeg får syntaks-fejl hele tiden, så måske kan den finpudses?

RookS
Avatar billede rookie Nybegynder
02. juni 2000 - 10:39 #1
OOOPS - det var ikke den sætning...men derimod denne:

sql = "SELECT * FROM  [Rekvirenter] WHERE Rekvirenter.ID =" & CStr(Request("ID"))  &_ "SELECT * FROM [Bruger] WHERE Bruger.Navn =" & CStr(Session("UserName"))

Avatar billede rookie Nybegynder
02. juni 2000 - 10:41 #2
Den sidste select-sætning er kun til for at jeg kan hente en emailadresse fra tabellen Bruger udfra UserName'et...

Avatar billede erikjacobsen Ekspert
02. juni 2000 - 10:45 #3
Det giver overhovedet ingen mening at lave de to selecter samtidig. Er der felter i de
to tabeller, der repræsenterer det samme? Så kan du nemlig lave en join

"select * from [Rekvirenter},[Bruger] where rekvirenter.id=" & Request("ID") & " and bruger.id=" & request("ID")

Så får du felter fra begge med i resultatet. Men altså: hvad er det du vil?
Avatar billede rookie Nybegynder
02. juni 2000 - 10:57 #4
De to tabeller skal ingen relation have med hinanden...

Først skal jeg kunne finde den rigtige post i Rekvirenter udfra et ID - hvilket indsættes i en form og senere skal jeg kunne medsende Brugerens emailadresse udfra brugerens UserName.

Jeg skal blot have åbnet begge tabeller - men kun de to poster (hhv. den rigtige Rekvirent samt den rigtige Bruger) - således jeg kan RS'e nogle bestemte felter...

Men hvordan???
Avatar billede netsrac Praktikant
02. juni 2000 - 11:06 #5
set rs = coon.execute("sql = "SELECT * FROM  [Rekvirenter] WHERE Rekvirenter.ID =" & CStr(Request("ID")))

set rs2 = coon.execute("SELECT * FROM [Bruger] WHERE Bruger.Navn =" & CStr(Session("UserName"))

Kan du ikke bare gøre sådan ??
Avatar billede netsrac Praktikant
02. juni 2000 - 11:08 #6
Ups en lille fejl

set rs = coon.execute("SELECT * FROM  [Rekvirenter] WHERE Rekvirenter.ID =" & CStr(Request("ID")))

set rs2 = coon.execute("SELECT * FROM [Bruger] WHERE Bruger.Navn =" & CStr(Session("UserName"))

Så henter du rekvienter sådan her
rs("rekvienter")
og henter bruger sådan her
rs("bruger")

Kan du ikke bare gøre sådan ??
Avatar billede erikjacobsen Ekspert
02. juni 2000 - 11:08 #7
Ja, Carsten. Mine ord. Du skal lave 2 selecter - bare rolig rookie, det er computeren
der skal knokle... hehe. Du har forøvrigt ikke brug for dine Cstr-kald.
Avatar billede netsrac Praktikant
02. juni 2000 - 11:10 #8
Det var da utroligt, endnu en lille  fejl

set rs = coon.execute("SELECT * FROM  [Rekvirenter] WHERE Rekvirenter.ID =" & CStr(Request("ID")))

set rs2 = coon.execute("SELECT * FROM [Bruger] WHERE Bruger.Navn =" & CStr(Session("UserName")))


Så henter du rekvienter sådan her
rs("rekvienter")
og henter bruger sådan her
rs("bruger")

Kan du ikke bare gøre sådan ??

Avatar billede rookie Nybegynder
02. juni 2000 - 11:11 #9
Det er sådan, jeg plejer at gøre det...men lige nu er det til Intranet og så skal det se sådan ud:

<%
sql = "SELECT * FROM  [Rekvirenter] WHERE Rekvirenter.ID =" & CStr(Request("ID"))  &_ SELECT * FROM [Bruger] WHERE Bruger.Navn =" & CStr(Session("UserName"))
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open sql, conn, 3, 3
Set Session("search_access") = rs

%>

Kan du prøve at vise mig, hvordan man laver hhv. sætning 1 & 2 så?

På forhånd tak :o)

Rookie
Avatar billede netsrac Praktikant
02. juni 2000 - 11:11 #10
erik >> Har jo sagt at du ikke må afsløre min identitet :)
Avatar billede rookie Nybegynder
02. juni 2000 - 11:14 #11
tro mig - jeg har siddet med et hav af request-forsøg - det dur sgu ikke her :o( kun med Cstr foran...

Det er en NT-server men det er anderledes en på alm. web, som jeg er vant til ;o)

:o( Rooks in trouble...

Avatar billede netsrac Praktikant
02. juni 2000 - 11:15 #12
sql = "SELECT * FROM  [Rekvirenter] WHERE Rekvirenter.ID =" & CStr(Request("ID"))  &_ SELECT * FROM [Bruger] WHERE Bruger.Navn =" & CStr(Session("UserName"))
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open sql, conn, 3, 3
Set Session("search_access") = rs

sql2 = "SELECT * FROM [Bruger] WHERE Bruger.Navn =" & CStr(Session("UserName"))
Set rs2 = Server.CreateObject("ADODB.Recordset")
rs2.Open sql2, conn, 3, 3
Avatar billede rookie Nybegynder
02. juni 2000 - 11:16 #13
ooops...jo jeg kunne *ggg* kun med request - sorry - jeg tager min påstand i mig selv igen ;o)

Men stadig kun den ene tabel...
Avatar billede rookie Nybegynder
02. juni 2000 - 11:54 #14
>>> Netsrac

Så får jeg følgende fejl:

[Microsoft][ODBC Microsoft Access-driver] Der er en syntaksfejl, fordi der mangler en operator. i forespørgselsudtrykket "Bruger.Navn = Hans Hansen"

Det er denne linie, der giver fejl:

rs2.Open sql2, conn, 3, 3
Avatar billede netsrac Praktikant
02. juni 2000 - 12:07 #15
Feltet hedder vel heller ikke bruger.navn ?? og hvis det gør er det nok en god ide at omdøbe det!

Bare fjern ponktumet :)
Avatar billede rookie Nybegynder
02. juni 2000 - 12:15 #16
netsrac>>>

tabellen hedder bruger og feltet hedder navn - det er der vel intet galt i??? ;o9
Avatar billede rookie Nybegynder
02. juni 2000 - 12:18 #17
Den skriver også automatisk det rigtig brugernavn i fejlsætningen, så der er ingen fejl der...den mangler en operator! Men hvilken???

Fejlen...:

[Microsoft][ODBC Microsoft Access-driver] Der er en syntaksfejl, fordi der mangler en operator. i forespørgselsudtrykket "Bruger.Navn = Hans Hansen"

Det er denne linie, der giver fejl:

rs2.Open sql2, conn, 3, 3
Avatar billede rookie Nybegynder
02. juni 2000 - 12:19 #18
Hvis jeg kun kører med den ene sql-sætning, så er der ingen probs - men når jeg begynder på sql2, rs2 osv. så klager den sig... ;o)

Avatar billede netsrac Praktikant
02. juni 2000 - 12:20 #19
Den skulle altså ikke fejle noget, prøv følgende

sql2 = "SELECT * FROM Bruger WHERE Navn =" & CStr(Session("UserName"))
Set rs2 = Server.CreateObject("ADODB.Recordset")
rs2.Open sql2, conn, 3, 3
Avatar billede rookie Nybegynder
02. juni 2000 - 12:26 #20
men det gør den... :o( Det er den sidste sætning, du skrev, som ikke dur... Den fatter ikke rs2.Open sql2, conn, 3, 3 ...
Avatar billede netsrac Praktikant
02. juni 2000 - 12:30 #21
Selvom den melder fejl i den sidste linie kan det jo godt være i sql2 linien der er fejl for den bliver jo kaldt op i den linie den melder fejl.
Har du prøvet den sidste ???
Avatar billede rookie Nybegynder
02. juni 2000 - 12:41 #22
Jamen, det er jo den jeg næsten har prøvet hele tiden...siden vi gik over til 2 sql-sætninger i stedet for én...

og ja, jeg har prøvet lige præcis den...det virker ikke :o(

Samme fejl...
Avatar billede rookie Nybegynder
02. juni 2000 - 12:43 #23
Sådan her ser den ud lige nu...:

<%
sql = "SELECT * FROM  [Rekvirenter] WHERE Rekvirenter.ID =" & Request("ID")
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open sql, conn, 3, 3
Set Session("search_access") = rs

sql2 = "SELECT * FROM [Bruger] WHERE Navn =" & Session("UserName")
Set rs2 = Server.CreateObject("ADODB.Recordset")
rs2.Open sql2, conn, 3, 3
Set Session2("search_access") = rs2

%>

Den eneste forskel er sidste linie - men jeg har også prøvet uden den...
Avatar billede netsrac Praktikant
02. juni 2000 - 12:44 #24
Det er jo ikke helt den samme, den er jo skrevet om for hver gang ??
Avatar billede rookie Nybegynder
02. juni 2000 - 12:45 #25
Det er ligesom den læser linien med "rs2.Open sql2, conn, 3, 3" og så kommer den ikke videre...

:o( *suk*
Avatar billede netsrac Praktikant
02. juni 2000 - 12:46 #26
<%
sql = "SELECT * FROM  [Rekvirenter] WHERE Rekvirenter.ID =" & Request("ID")
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open sql, conn, 3, 3
Set Session("search_access") = rs

sql2 = "SELECT * FROM Bruger WHERE Navn =" & Session("UserName")
Set rs2 = Server.CreateObject("ADODB.Recordset")
rs2.Open sql2, conn, 3, 3
Set Session("search_access2") = rs2

%>

Avatar billede lthrane Nybegynder
02. juni 2000 - 12:49 #27
Har du prøvet at kombinere de to statements i en SQL med følgende syntaks (ok - du skal lige fedte lidt med den):

SELECT Rekvirenter.*, Bruger.*
FROM Rekvirenter, Bruger
WHERE Rekvirenter.ID = variabel1
      AND Bruger.Navn = variabel2

Jeg ved ikke om det lader sig gøre, men jeg mindes at have brugt det selv engang
Avatar billede rookie Nybegynder
02. juni 2000 - 13:10 #28
Microsoft OLE DB Provider for ODBC
lthrane>>> Tak for rådet, men det giver ca. de samme fejl...:


Drivers error '80040e14'

[Microsoft][ODBC Microsoft Access-driver] Der er en syntaksfejl, fordi der mangler en operator. i forespørgselsudtrykket "Rekvirenter.ID =4 AND Bruger.Navn =Hans Hansen".

Jeg har skrevet følgende sætning i koden:

<%
SQL = "SELECT * FROM  [Rekvirenter], [Bruger]  WHERE Rekvirenter.ID =" & Request("ID") & " AND Bruger.Navn =" & Session("UserName")
Set RS = Server.CreateObject("ADODB.Recordset")
RS.Open SQL, Conn, 3, 3
Set Session("search_access") = RS

%>
Avatar billede rookie Nybegynder
02. juni 2000 - 13:12 #29
Altså den findet jo ID'et og UserName godt nok (hhv. 4 og Hans Hansen) men der er stadig denne syntaksfejl...!

Ret træls..! :o( *suk*

RookZ
Avatar billede lthrane Nybegynder
02. juni 2000 - 13:16 #30
Er det mon fordi du mangler nogle ping'er rundt om navnet: 'navn'. Det er vist nødvendigt hvis navn i databasen er af typen tekst.

lt

Avatar billede netsrac Praktikant
02. juni 2000 - 13:26 #31
<%
sql = "SELECT * FROM  [Rekvirenter] WHERE Rekvirenter.ID ='" & Request("ID") & "'"
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open sql, conn, 3, 3
Set Session("search_access") = rs

sql2 = "SELECT * FROM Bruger WHERE Navn ='" & Session("UserName") & "'"
Set rs2 = Server.CreateObject("ADODB.Recordset")
rs2.Open sql2, conn, 3, 3
Set Session("search_access2") = rs2

%>

Avatar billede rookie Nybegynder
02. juni 2000 - 15:03 #32
Tak for udholdenheden...ja, det var plingerne, der bar skylden :o)

Mange tak for svarene :o)

God weekend

Rooks
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