Avatar billede doozerii Nybegynder
08. juli 2002 - 13:11 Der er 7 kommentarer og
1 løsning

Smartere query? (måske noget Join?)

Hejsa

Nedenstående virker sådan set fint, men spørgsmålet er om man ikke kan lave det på en smartere måde :

<B>Nærmmeste arrangementer i kalenderen</B><BR>
<%
strQuery = "select * from kalender where `dato` >'"&datotid()&"' ORDER BY `dato` ASC LIMIT 0, 5;"
Set rsData = adoDataConn.Execute(strQuery)
Do While Not rsData.EOF %>
<P><B><%=rsData("navn").Value %></B><I>(<%=rsData("dato").value %>)</I><BR>
<%=rsData("beskrivelse").Value %><BR><%
secondq = "select * from person where ID = "&rsData("opretter").value&";"
Set secondD = adoDataConn.Execute(secondq)%>
oprettet af: <a href=mailto:<%=secondd("mail").Value%>> <%response.write(secondd("navn").value)%> </a></P>
<% rsData.MoveNext
Loop    %>

Det handler om at jeg finder de nærmeste 5 arrangementer i kalenderen, hvor "opretter" indeholder ID på en person i person tabellen. - Denne slår jeg så efterfølgende op for at få mail og navn. spørgsmålet er om det kan gøres mere elegant en 6 opslag pr visning af siden ? (uden at det går hen og bliver alt for kryptisk?)

Mvh
Kristoffer
Avatar billede doozerii Nybegynder
08. juli 2002 - 13:12 #1
beklager den rodede opstilling af koden... :-/
Avatar billede disky Nybegynder
08. juli 2002 - 13:26 #2
Det gør ikke noget, bare du fjerner ALT som ikke er SQL kode, alt andet hører ikke hjemme her
Avatar billede a1a1 Novice
08. juli 2002 - 13:29 #3
SELECT k.navn, k.dato, k.beskrivelse, p.mail, p.navn FROM kalender k
INNER JOIN person p ON k.opretter=p.ID

skulle være det du har brug for....

:)
Avatar billede a1a1 Novice
08. juli 2002 - 13:29 #4
og måske lige huske din Where, bagefter..

where `dato` >'"&datotid()&"' ORDER BY `dato` ASC LIMIT 0, 5;"
Avatar billede doozerii Nybegynder
08. juli 2002 - 16:06 #5
hmm.. .hvordan får jeg så resultatet ? kommer det til at ligge i rsdata("k.navn").value ? eller hvordan skeldner man mellem k.navn og p.navn ?
Avatar billede a1a1 Novice
08. juli 2002 - 16:14 #6
rsData(0) er det første felt
rsData(1) er nr. to
osv.

men du kan også "give feltet et andet navn" fx. personnavn
SELECT k.navn, k.dato, k.beskrivelse, p.mail, p.navn AS personnavn FROM kalender k
INNER JOIN person p ON k.opretter=p.ID

det er hurtigere for serveren at hente rsData(0) end rsData("navn")
Avatar billede doozerii Nybegynder
08. juli 2002 - 22:23 #7
cool. jeg skal lige teste det lidt af, så skulle den være der. Men jeg kan se princippet er iorden.  takker.
Avatar billede a1a1 Novice
09. juli 2002 - 17:54 #8
selv tak :)
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
Computerworld tilbyder specialiserede kurser i database-management

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