Avatar billede intim Nybegynder
25. juli 2001 - 11:11 Der er 23 kommentarer og
2 løsninger

frasortere i sql el. loop

Senario:
<%
strQ = \"SELECT * FROM bruger WHERE indeks =\" & bruger & \"\"

afdeling = rs(\"afdeling\")
fornavn = rs(\"fornavn\")

do while not rs.eof

response.write \"Navn: \" & navn & \"Afdeling: \" & afdeling

rs.movenext
loop
%>

Case:
Er der nogen måde man kan frasorterer alle gentagelser, så Brian afdeling 34 kun står der en  gang, selv om han fremtræder flere gange i rs???
Avatar billede slash Nybegynder
25. juli 2001 - 11:12 #1
kan du ik bare bruge select distinct?
Avatar billede kichian Nybegynder
25. juli 2001 - 11:13 #2
SELECT DISTINCT Afdeling, .. FROM bruger WHERE ..
Avatar billede oswald Nybegynder
25. juli 2001 - 11:13 #3
strQ = \"SELECT DISTINCT * FROM bruger WHERE indeks =\" & bruger & \"\"

Avatar billede proaccess Nybegynder
25. juli 2001 - 11:14 #4
strQ = \"SELECT DISTINCT fornavn, afdeling FROM bruger WHERE index =\" & bruger & \"\"
Avatar billede stig3 Mester
25. juli 2001 - 11:15 #5
strQ = \"SELECT DISTINCT Afdeling, Fornavn FROM bruger WHERE indeks =\" & bruger & \"\"
Avatar billede intim Nybegynder
25. juli 2001 - 11:28 #6
Alle -> Total misforståelse???

Der er 10 rækker i mit rs.

Tre af rækkerne indeholder Fornavn=Brian & Afdeling=Afdeling34

Jeg vil kun vise Fornavn=Brian & Afdeling=Afdeling34 1 gang, men når jeg laver et do while.....loop vælger den alle 3 rækker.

Det forhindre DISTINCT ikke !
Avatar billede slash Nybegynder
25. juli 2001 - 11:31 #7
så har du vist redundante data! Select distinct eliminerer jo direkte dubletter fra en select!
Avatar billede kichian Nybegynder
25. juli 2001 - 11:33 #8
DISTINCT * virker på hele rækken.
DISTINCT feltavn1,..,feltnavnX virker på de valgte felter.

Så DISTINCT Fornavn, Afdeling burde kun returnere 1 * Brian, Afdeling34.
Avatar billede kichian Nybegynder
25. juli 2001 - 11:35 #9
Ellers kunne man vel:
SELECT * FROM .. GROUP BY Fornavn, Afdeling
Avatar billede intim Nybegynder
25. juli 2001 - 11:38 #10
det forholder sig sådan at i de 3 rækker i mit rs hvor Brian fra afdeling34 fremtræder er det faktisk Brian Nielsen, Brian Larsen og Brian Hansen.
Så jeg har ikke redundante data, kun i den forstand, at jeg kun skal bruge dataerne Fornavn & afdeling og derfor bliver dataerne i loopet redundante, og der vil jeg så gerne frasorterer alle gentagelser!
Avatar billede kichian Nybegynder
25. juli 2001 - 11:38 #11
Glem det sidste svar. Svaret før er korrekt.
Avatar billede kichian Nybegynder
25. juli 2001 - 11:40 #12
Så er DISTINCT Fornavn, Afdeling FROM ..
også korrekt.
Avatar billede intim Nybegynder
25. juli 2001 - 11:43 #13
men når jeg benytter DISTINCT Fornavn, firma FROM...

Så står der stadig:

Fornavn: Brian Afdeling: Afdeling34
Fornavn: Brian Afdeling: Afdeling34
Fornavn: Brian Afdeling: Afdeling34

???
Avatar billede intim Nybegynder
25. juli 2001 - 11:44 #14
firma = afdeling
Avatar billede kichian Nybegynder
25. juli 2001 - 11:51 #15
Hvilken database bruger du?
Avatar billede intim Nybegynder
25. juli 2001 - 11:56 #16
en midlertidig access, som snart overgår til en oracle

Så når jeg looper gennem rs er der ingen redundante dataer, men det er der når jeg kun vælger at vise Fornavn og afdeling
Avatar billede kichian Nybegynder
25. juli 2001 - 11:59 #17
Jeg har hurtigt testet på Access 2000 og Oracle. Begge virker som forventet. Er du sikker på at Fornavn er \"Brian\" og afdeling er \"Afdeling34\" i alle 3 tilfælde.
Avatar billede kichian Nybegynder
25. juli 2001 - 12:03 #18
Du skriver at det er når du \"vælger at vise\". Betyder det at du ikke har skrevet SQLen om til:
SELECT DISTINCT Fornavn, afdeling FROM ...

Avatar billede intim Nybegynder
25. juli 2001 - 12:12 #19
jep det har jeg, men jeg mener i WYSIWYG\'en viser jeg kun Fornavn og Afdeling, og derfor er der redundante oplysninger, men det er der ikke når jeg looper gennem rs.

Men jeg er en torsk, jeg har ikke fortalt det hele.....!

Jeg...:

strQ = \"SELECT DISTINCT fornavn, afdeling, indeks FROM bruger WHERE indeks =\" & bruger & \"\"

...henter også indeksnummeret i rs og det er unikt, derfor virker DISTINCT ikke, jeg prøver at frasorterer rækker hvor, man ser bort fra indeksnummeret, men fornavn og afdeling er redundante.
Avatar billede proaccess Nybegynder
25. juli 2001 - 12:23 #20
<%
strQ = \"SELECT DISTINCT * FROM bruger WHERE indeks =\" & bruger & \"\"

TestA = \"\"
TestB = \"\"

do while not rs.eof

  afdeling = rs(\"afdeling\")
  fornavn = rs(\"fornavn\")

  if TestA<>afdeling then
    if TestB<>fornavn then
      response.write \"Navn: \" & fornavn & \"Afdeling: \" & afdeling
      TestB=fornavn
      TestA=Afdeling
    endif
  endif

  rs.movenext
loop
%>

Avatar billede proaccess Nybegynder
25. juli 2001 - 12:34 #21
FEJL, Skal være:

<%
strQ = \"SELECT DISTINCT * FROM bruger WHERE indeks =\" & bruger & \"\"

TestA = \"\"
TestB = \"\"

do while not rs.eof

  afdeling = rs(\"afdeling\")
  fornavn = rs(\"fornavn\")

  if TestA<>afdeling or TestB<>fornavn then
    response.write \"Navn: \" & fornavn & \"Afdeling: \" & afdeling
    TestB=fornavn
    TestA=Afdeling
  endif

  rs.movenext
loop
%>

Avatar billede kichian Nybegynder
25. juli 2001 - 12:35 #22
proaccess løsning virker kun hvis \"ens\" rækker kommer lige efter hindanden.

Hvorfor trækker du indeks med ud, når du ikke bruger det?.
Avatar billede intim Nybegynder
25. juli 2001 - 12:40 #23
proaccess -> ideen er god, skal bare lige pudses lidt.
I dit eks. kan man ikke have 2 der hedder Brian fra forskellige afdelinger.
But I get the picture!

kichian -> Så kan man bare sortere rs. Rækkerne i rs fungere som links <a href=\"se_mere.asp?id=<%=indeks%>\"><%=Fornavn%></a> derfor indeks!

Men tak for tiden og hjælpen.

Når det regner på præsten drypper det på degnen!
Avatar billede intim Nybegynder
25. juli 2001 - 12:41 #24
proaccess -> Det var jeg også kommet frem til!
Avatar billede stig3 Mester
26. juli 2001 - 09:29 #25
Ja, du skal lige huske at:
ORDER BY fornavn, afdeling
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