/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Inner Join med variabel
Fra : Thomas Møller Nexø


Dato : 26-09-03 01:39

Hej NG.

Jeg forsøger at lave et system, der ud fra brugerens valg fra en
drop-down skal vise data i en given tabel.
Jeg har til formålet opdelt mine data i forskellige tabeller da
data er sæsonafhængigt.

Jeg sender så sammen med formen via GET metoden et form field,
der hedder fek,s. s9900 (sæson 99-00).
Så langt så godt og dette virker da også fint.

Nu vil jeg så gerne have joinet to tabeller (virker også fint når
jeg laver det statisk), men den ene tabel, der skal joines skal
defineres ud fra det der bliver sendt via Querystring.

Min SQL ser ud som følger:

Saeson = Request.Querystring("Saeson")
   
      Set Rs = Server.CreateObject("ADODB.Recordset")
         Rs.Open "SELECT * FROM spillere INNER JOIN s9900 ON
spillere.Id = s9900.SpillerId", Conn

Denne virker upårklageligt, men hvis fek,s. der ikke skal s9900,
men i stedet variabelnavnet der sættes vha. Querystring så kikser
det og jeg får en fejl om at sætningen ikke bliver afsluttet.

Jeg har førsogt at indsætte variablen som & saeson & i SQL
sætningen hvor s9900 står nu, men det virker ikke.

Nogen der har en ide?

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Jens Gyldenkærne Cla~ (26-09-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 26-09-03 11:11

Thomas Møller Nexø skrev:

> Jeg har til formålet opdelt mine data i forskellige tabeller
> da data er sæsonafhængigt.

Det lyder som en upraktisk tilgang. Ensartede data bør ligge i én
tabel - så kan sæsonen være en attribut (et felt) i denne tabel.



> Saeson = Request.Querystring("Saeson")
>
> Set Rs = Server.CreateObject("ADODB.Recordset")
> Rs.Open "SELECT * FROM spillere INNER JOIN
> s9900 ON
> spillere.Id = s9900.SpillerId", Conn

Først et godt råd: Brug en variabel hver gang du skal lave et sql-
kald. På den måde er det langt lettere at finde evt. fejl.

Altså i stedet for at skrive:

   rs.open "SELECT ....."

- skriver man:

   Dim sql
   sql = "SELECT ....."
   rs.Open sql


> Jeg har førsogt at indsætte variablen som & saeson & i SQL
> sætningen hvor s9900 står nu, men det virker ikke.

Du skal huske at lukke og genåbne strengen før og efter din
sammensætning:

sql = "SELECT * FROM spillere INNER JOIN " & _
   Saeson & " ON spillere.Id = " & _
   Saeson & ".SpillerId"

(linjeskift skal ikke slettes).

Det er også vigtigt at holde styr på hvor der skal være mellemrum
og hvor der ikke må være mellemrum. I eksemplet ovenfor skal der
være mellemrum før og efter den første indsættelse af Saeson, men
kun mellemrum før (ikke efter) den sidste.

Hvis det går galt, er det første man gør at udskrive indholdet af
sql-variablen.

Se hvordan på siden her: <http://asp-faq.dk/article/?id=41>
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Thomas Møller Nexø (28-09-2003)
Kommentar
Fra : Thomas Møller Nexø


Dato : 28-09-03 12:49

> Det lyder som en upraktisk tilgang. Ensartede data bør ligge i én
> tabel - så kan sæsonen være en attribut (et felt) i denne tabel.
>
> Ja måske, men en sæson indeholder data for x-antal spillere.
På denne måde kan hver enkelt sæson holdes adskilt mens spillerne
får en række hver med tilhørende data, der så relateres til en
spillertabel via et id.


> Først et godt råd: Brug en variabel hver gang du skal lave et sql-
> kald. På den måde er det langt lettere at finde evt. fejl.
>
> Altså i stedet for at skrive:
>
>    rs.open "SELECT ....."
>
> - skriver man:
>
>    Dim sql
>    sql = "SELECT ....."
>    rs.Open sql
>
Tak for rådet, det vil jeg huske i fremtiden. Kunne bare godt lide
den anden og det er forøvrigt også den de fleste lærebøger benytter
(i hvert fald dem jeg har haft adgang til)
>

> Det er også vigtigt at holde styr på hvor der skal være mellemrum
> og hvor der ikke må være mellemrum. I eksemplet ovenfor skal der
> være mellemrum før og efter den første indsættelse af Saeson, men
> kun mellemrum før (ikke efter) den sidste.
>

Mit største problem vil jeg tro. Hvornår skal der plinges og hvor
mange skal der laves. Mellemrummet var jeg ikke lige klar over.

Igen, mange tak for din tid Jens

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Jens Gyldenkærne Cla~ (28-09-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 28-09-03 20:20

Thomas Møller Nexø skrev:

> Ja måske, men en sæson indeholder data for x-antal spillere.
> På denne måde kan hver enkelt sæson holdes adskilt mens
> spillerne får en række hver med tilhørende data, der så
> relateres til en spillertabel via et id.

Det er ikke noget problem at adskille data i samme tabel - bare man
har en eller flere feltværdier at gøre det på.


>> Først et godt råd: Brug en variabel hver gang du skal lave et
>> sql- kald.

> Tak for rådet, det vil jeg huske i fremtiden. Kunne bare godt
> lide den anden og det er forøvrigt også den de fleste
> lærebøger benytter (i hvert fald dem jeg har haft adgang til)

Hvilke bøger er det? Det er muligt at det giver en smule bedre
performance, men som beskrevet er det langt lettere at fejlfinde
hvis man kan udskrive sql-kaldet.


> Mit største problem vil jeg tro. Hvornår skal der plinges og
> hvor mange skal der laves. Mellemrummet var jeg ikke lige klar
> over.

Tekstværdier skal i enkeltanførselstegn. Datoer skal i mange
databaser også, men her kan man med stor fordel benytte
datofunktioner som Access' DateSerial eller MSSQL's CONVERT til at
sikre sig at datoen opfattes korrekt.

Der skal mellemrum mellem "ord" i en sql-kommando - og der kan
sættes mellemrum ind før og efter operatorer (=, <, >, etc.). Hvis
man er nogenlunde hjemme i sql-syntaksen er det normalt ikke svært
at se hvor der skal være mellemrum i den færdige sql-kommando. Det
kan til gengæld være svært at huske alle mellemrum korrekt i en
længere asp-sammensætning. Endnu en gang er udskrivning af sql-
kaldet en stor hjælp.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Jørn Andersen (29-09-2003)
Kommentar
Fra : Jørn Andersen


Dato : 29-09-03 04:52

On Sun, 28 Sep 2003 21:19:32 +0200, Jens Gyldenkærne Clausen
<jens@gyros.invalid> wrote:

>Thomas Møller Nexø skrev:
>> Tak for rådet, det vil jeg huske i fremtiden. Kunne bare godt
>> lide den anden og det er forøvrigt også den de fleste
>> lærebøger benytter (i hvert fald dem jeg har haft adgang til)
>
>Hvilke bøger er det? Det er muligt at det giver en smule bedre
>performance

Den kan vist kun være *ret* marginal. Hvor er vi henne, hvis man ikke
kan give tekststrenge variabel-navne
Så længe vi ikke snakker om at arbejde i lange loops el. lign. er det
vist ikke værd at tænke på.

>men som beskrevet er det langt lettere at fejlfinde
>hvis man kan udskrive sql-kaldet.

I høj grad.

--
Jørn Andersen,
Brønshøj

Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408929
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste