Avatar billede jacobfedefifi Nybegynder
15. april 2002 - 20:39 Der er 25 kommentarer og
1 løsning

If 2 poster ens then skriv kun én

Hey
Jeg har en følgende SQL sætning:
----------------
strSQL = ("SELECT * from marked where DateDiff('n', forside, now)<0 ORDER BY ID DESC")
Set rs = Conn.Execute(strSQL)
------------------------
Den virker fint, men hvordan laver jeg en if-sætning som gør, at hvis der fx. er 2 poster som har samme værdi i en bestem kolonne, så skriver den kun én af posterne ud. Jeg ved ikke om en if-sætning er løsningen, men det tror jeg bare. Er der en der kan knække denne lille nød?
Avatar billede kimiwan Nybegynder
15. april 2002 - 20:42 #1
hvis du kun skal bruge den enkelte kolonne, kan du bruge DISTINCT i din sqlsætning:

SELECT DISTINCT kolonne FROM marked WHERE DateDiff('n', forside, now)<0 ORDER BY ID DESC
Avatar billede kimiwan Nybegynder
15. april 2002 - 20:43 #2
det gør at det kun er de efterfølgende kolonner med samme værdi ikke bliver taget med.
Avatar billede kimiwan Nybegynder
15. april 2002 - 20:45 #3
hvis du nu tager "select by, dag from marked", så kan du få flg. resultat:

københavn  |  lørdag
københavn  |  søndag
hillerød  |  søndag
næstved    |  lørdag

..altså, den ser på hele rækken, ikke blot det enkelte felt.
Avatar billede jacobfedefifi Nybegynder
15. april 2002 - 20:52 #4
Lyder interessant, men jeg er ikke helt sikker på at det er det jeg søger.. I dit eks. med københavn, der skulle den så fravælge posten københavn | søndag fordi københavn sår i samme kolonne lige ovenover altså 2 gange...
Avatar billede jacobfedefifi Nybegynder
15. april 2002 - 20:56 #5
Jeg får fejl på denne sætning:
----------------
strSQL = ("SELECT DISTINCT overskrift from marked where DateDiff('n', forside, now)<0 ")
----------------
er den ikke rigtig?
Avatar billede kimiwan Nybegynder
15. april 2002 - 21:03 #6
hvilken fejl får du da?
Avatar billede jacobfedefifi Nybegynder
15. april 2002 - 21:06 #7
Jeg har lavet den om til:
------------------------------
strSQL = ("SELECT DISTINCT * from marked where DateDiff('n', forside, now)<0 ORDER BY ID DESC")
-------------------------------
Den virker, men jeg får nøjagtig samme resultat som før... Den sorteret ikke de poster fra, som har gentagende værdier i kolonnen "overskrift".
Avatar billede kimiwan Nybegynder
15. april 2002 - 21:09 #8
du har formentlig et unikt id for hver række i tabellen.. og så er hver enkelt række jo unik :o)

hvis du siger, hvilken fejl du fik før, kan jeg evt hjælpe dig med det.
Avatar billede jacobfedefifi Nybegynder
15. april 2002 - 21:11 #9
Du har ret i det med ID'en. Men problemet er at den skal kun vælge en post fra hvis den har samme værdi i én bestem kolonne - overskrift. De må gerne være forskellige i de øvrige kolonner.
Avatar billede kimiwan Nybegynder
15. april 2002 - 21:13 #10
og du er nødt til at hente data ud fra flere kolonner end bare den ene?
Avatar billede jacobfedefifi Nybegynder
15. april 2002 - 21:15 #11
Jep for jeg skal kun have de poster fra de sidte 24 timer, og har derfor brug for "forside" som har oprettelse tidspunktet.
Avatar billede kimiwan Nybegynder
15. april 2002 - 21:19 #12
for at kunne *vise* oprettelsestidspunktet, eller blot for at kunne vælge data i sql'en?
Avatar billede jacobfedefifi Nybegynder
15. april 2002 - 21:29 #13
for at min SELECTION kun skal have de poster som er oprette de sidste 24 timer
Avatar billede kimiwan Nybegynder
15. april 2002 - 21:34 #14
for at gøre det, behøver du have "forside" med i dit recordset.. du kan sagtens bruge det til at sortere med.

den sql streng, du havde tidligere, burde virke fint nok.. men du kan jo fortælle mig, hvilken fejl det var, du fik (??)

strSQL = ("SELECT DISTINCT overskrift FROM marked WHERE DateDiff('n', forside, now)<0 ")
Avatar billede kimiwan Nybegynder
15. april 2002 - 21:35 #15
glemte lige et "ikke" i første linje der.. du behøver IKKE have "forside" med i dit recordset.
Avatar billede jacobfedefifi Nybegynder
15. april 2002 - 21:38 #16
På denne sætning:
-----------------------
strSQL = ("SELECT DISTINCT overskrift FROM marked WHERE DateDiff('n', forside, now)<0 ORDER BY ID DESC ")
------------------------
kommer denne fejl:
----------------------
Microsoft][ODBC Microsoft Access Driver] ORDER BY clause (ID) conflicts with DISTINCT
Avatar billede jacobfedefifi Nybegynder
15. april 2002 - 21:41 #17
Og jeg skal bruge "ID", for den brugeres senere som variabel til at vælge én bestem annonce
Avatar billede kimiwan Nybegynder
15. april 2002 - 22:09 #18
men du vil kun have et enkelt id ud pr. ens overskrift?  eller vil du ha' en liste over alle id'er med den samme overskrift?
Avatar billede jacobfedefifi Nybegynder
15. april 2002 - 22:18 #19
Jeg vil have en SELECTION, som indeholder alle poster - Men hvis 2 poster har samme værdi i "overskrift" så skal den kun med i SELECTION'en én gang. Kan du forstår det, eller er det helt hen i skoven?
Avatar billede kimiwan Nybegynder
15. april 2002 - 22:43 #20
ok.. så kan du gøre det i aspkoden sådan her:

'åbn connection og recordset (rs)
while not rs.eof 'looper igennem dit recordset
if rs("overskrift") <> tmpOverskrift then 'hvis det er en ny overskrift (tmpoverskrift)..
  response.write rs("overskrift") 'udskrif overskrift
  tmpOverskrift = rs("overskrift") 'sæt ny overskrift til tmpoverskrift
end if
response.write rs("id") & "<br>" 'udskriv id og linje break - tilpas til dit design
rs.movenext 'gå til næste række i recordsettet
wend
'close connection og recordset
Avatar billede jacobfedefifi Nybegynder
15. april 2002 - 22:50 #21
Okay, det forsår jeg simpelhen ikke, hvor skal den if-sætning ind henne?
Avatar billede kimiwan Nybegynder
15. april 2002 - 22:54 #22
den skal ind der hvor du vil udskrive overskriften.

det, den gør, er tjekke om den allerede har udskrevet overskriften (tekker om tmpOverskrift er den samme som den nuværende værdi..
- hvis det er, udskriver den det ikke!
- hvis den ikke er, udskriver den overskriften.. og sætter tmpOverskrift til den nuværende værdi.
- næste gang du så kommer til den if statement, er tmpOverskrift = rs("overskrift"), hvis rs("overskrift") er den samme som i den foregående række.

forstår du hvad jeg mener, ellers skal du prøve at køre det stykke kode uden noget html udenom (husk at lave din db connection og databseudtræk).

for at de virker, sk
Avatar billede kimiwan Nybegynder
15. april 2002 - 22:55 #23
for at de virker, skal du ORDER BY overskrift.. så de kommer i rækkefølge, når du looper igennem recordsettet.

(kom vist til at trykke enter lidt for hurtigt der)
Avatar billede jacobfedefifi Nybegynder
15. april 2002 - 23:11 #24
jeg prøver lige...
Avatar billede jacobfedefifi Nybegynder
15. april 2002 - 23:20 #25
Thank you... det virker nu skal jeg så bare have sat nogle variabler ind... TAK
Avatar billede kimiwan Nybegynder
15. april 2002 - 23:20 #26
selv tak, og god fornøjelse :o)
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