/ 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
Søgning i database
Fra : Ukendt


Dato : 26-03-07 23:59



Hej NG

Skal søge med søgeord som kriterie på flere felter...
Hvordan laves den hurtigste søgning i en database(Access)...???
Håber i kan hjælpe...

Hilsen
Bjarne
"Every day new surprises"



 
 
Kasper Katzmann (27-03-2007)
Kommentar
Fra : Kasper Katzmann


Dato : 27-03-07 05:34

bsn skrev noget i stil med:
> Hej NG
>
> Skal søge med søgeord som kriterie på flere felter...
> Hvordan laves den hurtigste søgning i en database(Access)...???
> Håber i kan hjælpe...

Jeg tror du vil være bedst hjulpet ved at læse her:
http://www.html.dk/tutorials/asp/


--
/Kasper Katzmann

Det er kun i Jeopardy at svaret kommer før spørgsmålet.


Christian Itzchaky L~ (27-03-2007)
Kommentar
Fra : Christian Itzchaky L~


Dato : 27-03-07 10:31

WHERE FELTNAVN = '%" & request.form("søgeinput") & "%'

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

Jørn Andersen (27-03-2007)
Kommentar
Fra : Jørn Andersen


Dato : 27-03-07 11:49

On 27 Mar 2007 09:30:55 GMT, Christian Itzchaky Larsen
<itzchaky@hotmail.com> wrote:

>WHERE FELTNAVN = '%" & request.form("søgeinput") & "%'

Hmmm ...
1) Bruger man ikke LIKE, når der søges med wildcards?
... WHERE FELTNAVN LIKE '%" & request.form("søgeinput") & "%'

2)
Man skal være opmærksom på, at wildcard-søgning generelt tager længere
tid end eksakt søgning - og specielt, at når man *starter* med et
wildcard, så drager man ikke fordel af, at feltet evt. er indekseret.
Så, hvis det er muligt, bør man bruge eksakt søgning.

3)
Under alle omstændigheder bør man ikke putte form-input direkte i en
SQL-streng, men validere input først:
<url: http://www.asp-faq.dk/article/?id=95>

Mvh. Jørn

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

Stop Bush's krige - og Foghs støtte til dem
www.nejtilkrig.dk

Ukendt (28-03-2007)
Kommentar
Fra : Ukendt


Dato : 28-03-07 00:46


"Jørn Andersen" <jorn@jorna.dk> skrev
> Hmmm ...
> 1) Bruger man ikke LIKE, når der søges med wildcards?
> ... WHERE FELTNAVN LIKE '%" & request.form("søgeinput") & "%'

Jo, det er rigtigt...

> 2)
> Man skal være opmærksom på, at wildcard-søgning generelt tager længere
> tid end eksakt søgning - og specielt, at når man *starter* med et
> wildcard, så drager man ikke fordel af, at feltet evt. er indekseret.
> Så, hvis det er muligt, bør man bruge eksakt søgning.

Det er f.eks et felt med Håndværk, et felt med Beskrivelse, et felt med
Søgeord -
Det er så om et søgeord matcher nogle ord i disse felter...f.eks "murer"
eller "mure", "fliser" eller "flise"...
Håber det giver mening...

> 3)
> Under alle omstændigheder bør man ikke putte form-input direkte i en
> SQL-streng, men validere input først:
> <url: http://www.asp-faq.dk/article/?id=95>

Helt korrekt...
Prøv lige at læse mit svar til Kasper...
Bjarne



Jørn Andersen (28-03-2007)
Kommentar
Fra : Jørn Andersen


Dato : 28-03-07 01:10

On Wed, 28 Mar 2007 01:45:57 +0200, "bsn" <bsnSNABELAoncableDOTdk>
wrote:

>> 2)
>> Man skal være opmærksom på, at wildcard-søgning generelt tager længere
>> tid end eksakt søgning - og specielt, at når man *starter* med et
>> wildcard, så drager man ikke fordel af, at feltet evt. er indekseret.
>> Så, hvis det er muligt, bør man bruge eksakt søgning.
>
>Det er f.eks et felt med Håndværk, et felt med Beskrivelse, et felt med
>Søgeord -
>Det er så om et søgeord matcher nogle ord i disse felter...f.eks "murer"
>eller "mure", "fliser" eller "flise"...
>Håber det giver mening...

Tror jeg.
Men jeg tror samtidig der er flere problemstillinger involveret.

a) "Håndværk" lyder som om du har et begrænset antal håndværk, hvor hver
record har ét og kun ét håndværk tilknyttet.
Hvis det er rigtigt, så ville jeg lave en separat tabel med en liste
over håndværk + et id til hver og så have id'et som fremmednøgle i
"hovedtabellen".
Det giver dig også en nem mulighed for at lave en select-box til dette
valg.

b) "Beskrivelse" lyder som en beskrivende tekst.
Her tror jeg ikke du slipper uden om wildcard-søgning.

c) "Søgeord" lyder som et sæt af forud-definerede søgeord, hvor hver
record kan have tilnyttet et eller flere søgeord.
Her ville jeg lave en separat tabel med søgeord + id.
Men da der sikkert både er tale om, at et søgeord kan bruges til flere
records og at en record kan have flere søgeord, er du nødt til at lave
en mange-til-mange-relation.

En mange-til-mange-relation laves med en "mellem-tabel" mellem
hoved-tabellen og søgeords-tabellen og indeholder par af de to tabellers
id (+ evt. et autonummer-id).

Jeg ved ikke, om jeg har gættet rigigt mht. til dine felter, men i hvert
fald har jeg prøvet at vise, at der er flere muligheder.

Du vil få en sikrere søgning, hvis du lægger "kategoriserende" søgeord
over i separate tabeller.

Good luck,
Jørn

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

Stop Bush's krige - og Foghs støtte til dem
www.nejtilkrig.dk

Jørn Andersen (28-03-2007)
Kommentar
Fra : Jørn Andersen


Dato : 28-03-07 01:18

On Wed, 28 Mar 2007 02:10:04 +0200, Jørn Andersen <jorn@jorna.dk> wrote:

>c) "Søgeord" lyder som et sæt af forud-definerede søgeord, hvor hver
>record kan have tilnyttet et eller flere søgeord.
>Her ville jeg lave en separat tabel med søgeord + id.
>Men da der sikkert både er tale om, at et søgeord kan bruges til flere
>records og at en record kan have flere søgeord, er du nødt til at lave
>en mange-til-mange-relation.

Glemte lige: Her kan du så også anvende en select-box.



Mvh. Jørn

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

Ukendt (28-03-2007)
Kommentar
Fra : Ukendt


Dato : 28-03-07 08:23


"Jørn Andersen" <jorn@jorna.dk> skrev
> a) "Håndværk" lyder som om du har et begrænset antal håndværk, hvor hver
> record har ét og kun ét håndværk tilknyttet.
> Hvis det er rigtigt, så ville jeg lave en separat tabel med en liste
> over håndværk + et id til hver og så have id'et som fremmednøgle i
> "hovedtabellen".
> Det giver dig også en nem mulighed for at lave en select-box til dette
> valg.

Du får lige en problemformulering.
Jeg har et website, hvor der skal være et erhvervsregister(FirmaNavn,
Adresse, Telefon, Kort beskrivelse(Max 250 tegn), Søgeord(Max 10)).
Dette er nogle oplysninger som erhvervsdrivende selv indtaster.
Jeg vil så have at en bruger, som skal bruge en murer, indtaster ordet
"murer", og der så søges i "Kort beskrivelse" og "Søgeord"
og der aå fremkommer en liste med de records(håndværkere) som indeholder
"Søgeord".

> b) "Beskrivelse" lyder som en beskrivende tekst.
> Her tror jeg ikke du slipper uden om wildcard-søgning.

Hvordan er sqlsyntax for at finde posten, hvor "Søgeord" indgår...

> Du vil få en sikrere søgning, hvis du lægger "kategoriserende" søgeord
> over i separate tabeller.

Ikke helt forstået...

Hvad hvis der skal være flere søgeord i samme søgning...???

Tak for tålmodigheden...
Bjarne



Jørn Andersen (28-03-2007)
Kommentar
Fra : Jørn Andersen


Dato : 28-03-07 13:45

On Wed, 28 Mar 2007 09:22:43 +0200, "bsn" <bsnSNABELAoncableDOTdk>
wrote:

>Du får lige en problemformulering.
>Jeg har et website, hvor der skal være et erhvervsregister(FirmaNavn,
>Adresse, Telefon, Kort beskrivelse(Max 250 tegn), Søgeord(Max 10)).
>Dette er nogle oplysninger som erhvervsdrivende selv indtaster.
>Jeg vil så have at en bruger, som skal bruge en murer, indtaster ordet
>"murer", og der så søges i "Kort beskrivelse" og "Søgeord"
>og der aå fremkommer en liste med de records(håndværkere) som indeholder
>"Søgeord".
>
>> b) "Beskrivelse" lyder som en beskrivende tekst.
>> Her tror jeg ikke du slipper uden om wildcard-søgning.
>
>Hvordan er sqlsyntax for at finde posten, hvor "Søgeord" indgår...

"SELECT blabla" & _
" WHERE Soegeord LIKE '%" & Soegeord1 % "%'" & _
" OR Soegeord LIKE '%" & Soegeord2 % "%'" & _
" OR Soegeord LIKE '%" & Soegeord3 % "%'"

OR kan udbyttes med AND efter behov

NB: Det giver oftest færrest problemer, hvis man undgår æøå i variable
og feltnavne.

>> Du vil få en sikrere søgning, hvis du lægger "kategoriserende" søgeord
>> over i separate tabeller.
>
>Ikke helt forstået...

Hvis du fx har opdelt dine erhvervsdrivende i et antal "brancher", så
kan du definere dem på forhånd i en separat tabel.
Hvis folk selv skal definere den slags, så vil du både få murer, murere,
murerfirma, murre, mure (de sidste to er stavefejl, men det er også
almindelige fejl).
Det kræver selvfølgelig en større parktisk indsigt i det område, man
arbejder med, hvis man laver foruddefinerede søgeord.
Til gengæld undgår du stavefejl både ved oprettelse og søgning (= misset
søgning).

>Hvad hvis der skal være flere søgeord i samme søgning...???

Hvis det er indtastede søgeord, skal du bruge Split og/eller
Join-funktionerne i ASP (split på mellemrum).
Hvis det er forudvalgte, kan du enten have flere select-bokse eller
(tror jeg) bruge multiple select i samme boks (har dog aldrig selv brugt
den, så ...). Eller bruge checkbokse.

>Tak for tålmodigheden...

No problem.

Good luck,
Jørn

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

Stop Bush's krige - og Foghs støtte til dem
www.nejtilkrig.dk

Ukendt (29-03-2007)
Kommentar
Fra : Ukendt


Dato : 29-03-07 19:06


"Jørn Andersen" <jorn@jorna.dk> skrev
>>Hvordan er sqlsyntax for at finde posten, hvor "Søgeord" indgår...
>
> "SELECT blabla" & _
> " WHERE Soegeord LIKE '%" & Soegeord1 % "%'" & _
> " OR Soegeord LIKE '%" & Soegeord2 % "%'" & _
> " OR Soegeord LIKE '%" & Soegeord3 % "%'"
>
> OR kan udbyttes med AND efter behov

Ok...

> NB: Det giver oftest færrest problemer, hvis man undgår æøå i variable
> og feltnavne.

Ja det er rigtigt - det var bare lidt pseudokode...

> Hvis du fx har opdelt dine erhvervsdrivende i et antal "brancher", så
> kan du definere dem på forhånd i en separat tabel.
> Hvis folk selv skal definere den slags, så vil du både få murer, murere,
> murerfirma, murre, mure (de sidste to er stavefejl, men det er også
> almindelige fejl).
> Det kræver selvfølgelig en større parktisk indsigt i det område, man
> arbejder med, hvis man laver foruddefinerede søgeord.
> Til gengæld undgår du stavefejl både ved oprettelse og søgning (= misset
> søgning).

Jeg opretter nok nogle ...

>>Hvad hvis der skal være flere søgeord i samme søgning...???
>
> Hvis det er indtastede søgeord, skal du bruge Split og/eller
> Join-funktionerne i ASP (split på mellemrum).
"snip"

Ok...

Tak for det...
Bjarne



Ukendt (28-03-2007)
Kommentar
Fra : Ukendt


Dato : 28-03-07 00:38


"Kasper Katzmann" <nogen@microsoft.com> skrev
>> Skal søge med søgeord som kriterie på flere felter...
>> Hvordan laves den hurtigste søgning i en database(Access)...???
>> Håber i kan hjælpe...
>
> Jeg tror du vil være bedst hjulpet ved at læse her:
> http://www.html.dk/tutorials/asp/

Det er søgning i èt felt...
Jeg skal søge med ord på flere felter(5) i samme record...
Bjarne



Jørn Andersen (28-03-2007)
Kommentar
Fra : Jørn Andersen


Dato : 28-03-07 01:17

On Wed, 28 Mar 2007 01:38:24 +0200, "bsn" <bsnSNABELAoncableDOTdk>
wrote:

>"Kasper Katzmann" <nogen@microsoft.com> skrev
>>> Skal søge med søgeord som kriterie på flere felter...
>>> Hvordan laves den hurtigste søgning i en database(Access)...???
>>> Håber i kan hjælpe...
>>
>> Jeg tror du vil være bedst hjulpet ved at læse her:
>> http://www.html.dk/tutorials/asp/
>
>Det er søgning i èt felt...
>Jeg skal søge med ord på flere felter(5) i samme record...

... WHERE feltnavn1 = '" & s1 & "'" _
" AND feltnavn2 = " & i1 & _
" AND feltnavn3 LIKE '%" & s2 & "%'" & _
" AND feltnavn4 = " & i2 & _
" AND feltnavn5 = " & i3 & "...."

- hvor:
s1, s2 er streng-værdier
i1, i2, i3 er talværdier

Du kan udskifte AND med OR (og evt. paranteser) efter behov.

Good luck,
Jørn

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

Stop Bush's krige - og Foghs støtte til dem
www.nejtilkrig.dk

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

Månedens bedste
Årets bedste
Sidste års bedste