/ 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
Den elegante SQL-sætning til en access
Fra : Simon K


Dato : 09-04-05 16:56

Hej

Jeg har en SQL sætninger der bliver til flere når jeg skal lave et
udtræk, der henter opslag i andre tabeller. Dette kan garanteret gøres
mere elegant med fx. INNER JOIN eller JOIN, men jeg kan ikke få det til
at lykkes.
Er der en venlig sjæl der vil guide mig ud fra den faktiske SQL sætning
jeg bruger:

xSQL = "SELECT * FROM regtabel"
Set rs = Conn.Execute(xSQL)


Do while not rs.Eof

xSQLname="SELECT navn FROM navntabel WHERE Id = " & rs("navn")
Set rt = Conn.Execute(xSQLname)


xSQLkat="SELECT kategori FROM kategoritabel WHERE Id = " & ("kategori")
Set rx = Conn.Execute(xSQLkat)


xSQLkunde="SELECT kunde FROM kundetabel WHERE Id = " & rs("kunde")
Set rv = Conn.Execute(xSQLkunde)
   %>
      <%= rs("dato") %>
      <%= rt("navn") %>
      <%= rx("kategori") %>
      <%= rs("varenr") %>
      <%= rs("bemark") %>
      <%= rv("kunde") %>
      <%= rs("tid") %>
   <%
Rs.MoveNext

Loop


På forhånd tak og venlig hilsen
Simon K

 
 
Jens Gyldenkærne Cla~ (09-04-2005)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 09-04-05 16:20

Simon K skrev:

> Jeg har en SQL sætninger der bliver til flere når jeg skal
> lave et udtræk, der henter opslag i andre tabeller. Dette kan
> garanteret gøres mere elegant med fx. INNER JOIN eller JOIN,
> men jeg kan ikke få det til at lykkes.

Har du prøvet forespørgselsguiden i Access? Her kan du med dialoger
og træk og slip få hjælp til din forespørgsel.

Når den er færdig, kan du enten skifte til sql-visning for at se
koden, eller også bare gemme den og bruge forespørgslen som kilde
fra asp (SELECT * FROM dinforespørgsel)

> Er der en venlig sjæl der vil guide mig ud fra den faktiske
> SQL sætning jeg bruger:

[snip]

- den kode kan bestemt godt trænge til en opstrammer. Jeg vil
anbefale dig at finde en tutorial om databaser eller endnu bedre en
bog eller et hæfte om databaser. Her vil du kunne læse om det
grundlæggende mht. tabeldesign, forespørgsler, joins, relationer
mv.
--
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

Tomasz Otap (09-04-2005)
Kommentar
Fra : Tomasz Otap


Dato : 09-04-05 17:54

Simon K wrote:
> xSQLkat="SELECT kategori FROM kategoritabel WHERE Id = " & ("kategori")

Du har glemt at angive, om "kategori" hentes fra rs; følgende eksempel
på en SQL-sætning går ud fra, at det er det:

-----------------

select    regtabel.dato,
   navntabel.navn,
   kategoritabel.kategori,
   regtabel.varenr,
   regtabel.bemark,
   kundetabel.kunde,
   regtabel.tid
from regtabel
inner join navntabel on navntabel.id = regtabel.navn
inner join kategoritabel on kategoritabel.id = regtabel.kategori
inner join kundetabel on kundetabel.id = regtabel.kunde

----------------

Bemærk: denne forespørgsel vil ikke returnere nogen rows, hvis blot en
af de angivne tabeller ikke matcher med regtabel. Jeg ved ikke, om det
er det, du ønsker? Din egen eksempelkode vil dog returnere en ASP-fejl,
hvis enten navntabel, kategoritabel eller kundetabel ikke finder match -
du laver ikke noget check for EOF for disse recordsets.

Erstatter du INNER JOIN med LEFT JOIN, vil forespørgslen returnere alle
rows fra regtabel, med værdier fra de andre tabeller sat til NULL hvor
der ikke findes tilsvarende rows. Det er måske nærmere på, hvad du havde
i tankerne?

Du kan finde en hurtig tutorial til brug af JOIN i SQL-sætninger her:
http://www.w3schools.com/sql/sql_join.asp

t

Søg
Reklame
Statistik
Spørgsmål : 177548
Tips : 31968
Nyheder : 719565
Indlæg : 6408802
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste