Avatar billede skall Nybegynder
06. oktober 1999 - 13:32 Der er 17 kommentarer og
1 løsning

Hvordan laves en vægtet søgning?

Jeg har 3 felter i en database og vil gerne lave en søgning:
select * from tabel where felt1 like ’%søgeord%’ or felt2 like ’%søgeord%’ or felt3 like ’%søgeord%’

Resultatet skal så vises med de records der passer på felt1 først og derefter felt2 osv.

Hvordan gør man det ??
Avatar billede ulrik Nybegynder
06. oktober 1999 - 14:44 #1
du ku' jo bare bruge slave metoden....

set RS1 = Conn.Execute("select * from tabel where felt1 like ’%søgeord%’")

set RS2 = Conn.Execute("select * from tabel where felt2 like ’%søgeord%’")

set RS3 = Conn.Execute("select * from tabel where felt3 like ’%søgeord%’")
Avatar billede flemming Nybegynder
08. oktober 1999 - 10:58 #2
select * from tabel where felt1 like ’%søgeord%’ or felt2 like ’%søgeord%’ or felt3 like ’%søgeord%’
ORDER BY felt1,felt2,felt3
Avatar billede hnteknik Novice
08. oktober 1999 - 11:02 #3
Du skal forene tre forespørgelser med UNION

Husk du ikke kan bruge momo og objekt felter i en UNION forespørgelse.

Henrik

Skriv, hvis du mangler et eks.
Avatar billede hnteknik Novice
08. oktober 1999 - 11:08 #4
THERE SHE BLOWS:

SELECT * from tabel
WHERE (((tabel.felt1) Like ’%søgeord1%’"))
union
SELECT * from tabel
WHERE  (((tabel.felt2) Like ’%søgeord2%’))
union
SELECT  * from tabel
WHERE (((tabel.felt3)’%søgeord3%’"));
Avatar billede skall Nybegynder
08. oktober 1999 - 11:11 #5
Tak, jeg kigger på det snarest...
Avatar billede ulrik Nybegynder
08. oktober 1999 - 19:31 #6
hvis flemmings svar virker, så bruge den!
Avatar billede skall Nybegynder
11. oktober 1999 - 09:56 #7
Ulrik>> det gør det ikke, prøver nu med hnteknink's forslag.
Avatar billede skall Nybegynder
12. oktober 1999 - 00:10 #8
hnteknik>> Resultatet bliver ikke vægtet. Er union ikke en form for 'OR'
Avatar billede hnteknik Novice
12. oktober 1999 - 17:45 #9
Det forstår jeg ikke Skall.
Når jeg kører ovenstående kommer felt 1 før felt 2 før felt 3, men det er klart, at hvis der der er en record, der opfylder f.eks. både felt 1 og 3, vil den komme under felt 1.
HVad er det du vil ????? og hvad mener du nu med vægtet !!!

Mit eksempel opfylder det du spørger om ! Så kom da med et eksempel
Avatar billede skall Nybegynder
12. oktober 1999 - 18:00 #10
Vi har 3 felter:

Titel
Beskrivelse
URL

Vi søger på "Bjarne Riis" og det giver 4 resultater

Så skal de records hvor Bjarne Riis forekommer i Titel vises først.
Derefter vises de record hvor Bjarne Riis forekommer i beskrivelse.
Og tilsidst vises de record hvor Bjarne Riis forekommer i URL.

Resultat:

Titel                      Beskrivelse                  URL
På tur med Bjarne Riis      Ny side Frankrig              www.1.dk
Bjarne Riis på EPO          Gammel side om...            www.2.dk
Ny test af cykler          Bjarne Riis fortæller...      www.3.dk
Cykel Sport i Danmark      Ny site med cykel sport      www.bjarne riis.dk
Avatar billede hnteknik Novice
12. oktober 1999 - 19:15 #11
Krads Krads

Det virkede squ på min NT4 maskine.
Nu ligger de hulter til bulter på
min win98 maskine.

Jeg må lige checke imorgen for at udelukke evt. driver update probs.

De skulle ellers lægge sig pænt i r.... af hverandre.
Avatar billede skall Nybegynder
12. oktober 1999 - 19:20 #12
hnteknik>> Jeg forsøger på en NT 4.0 og SQL Server 7.0

Avatar billede hnteknik Novice
12. oktober 1999 - 22:24 #13
Prøv at checke denne her:

SELECT * from tabel1
WHERE (tabel1.titel Like '*bjarne riis*' )
UNION ALL
SELECT  * from tabel1
WHERE (tabel1.beskrivelse Like '*bjarne riis*')
UNION ALL
SELECT  * from tabel1
WHERE (tabel1.url like '*bjarne riis*');

ALL giver den samme record op til tre gange, hvis Bjarne riis står i alle tre søgefelter. Ellers kommer de i den ønskede rækkefølge. Uden ALL laver denne version af jetten af en eller anden grund skod i det. Jeg tror det er pga at søgekriteriet er det samme i alle tre selects ! Tre forskelleige giver det rigtige resultat uden ALL.

Godnat Henrik

Avatar billede skall Nybegynder
13. oktober 1999 - 10:36 #14
Det er ikke helt godt med ALL. De første poster i resultatet ser ud til at være ok, men så kommer de samme poster igen tilfældige steder.
Avatar billede hnteknik Novice
13. oktober 1999 - 18:00 #15
ALL skulle ellers give en
traight through og min jet version
giver det ønskede resultat. Jeg har ikke
checket acc 200 jet versionen, men den
var sidst også pæn med et andet resultat. Tilbage er så muligheden for programmerbart at danne en ny tabel med indholdet af de tre forespørgelser.

BTW gårdagens nævnte øvelse blev gennemført med en dummy autonumber - det hjalp tilsyneladende helt gevaldigt.
PRØV INDEN DU OPGIVER HELT AT UDVIDE DIN TABEL MED F.EKS. AUTONUMMER.
Henrik
Avatar billede skall Nybegynder
16. oktober 1999 - 16:01 #16
hnteknik>> Jeg har et autonumber felt i min tabel.

Og jeg anvender som sagt SQL 7.0 og NT 4.0 hvis har nogen betydning.

Avatar billede hnteknik Novice
21. oktober 1999 - 12:58 #17
Skall - jeg har kun testet med Access97 men med forskellig resultat afhængig formodentligt af jetversionen. Logisk set skulle det virke ! Du kan evt. prøve den tunge vej, hvor du via 4 commands først tømmer en temp tabel og dernest fylder den med de 3 sorterede queries. Lidt tungt og hvad så med flere på en gang.

Henrik
Avatar billede skall Nybegynder
21. oktober 1999 - 13:34 #18
hnteknink>> Ja det er nok lidt tungt.

Hvad gør de store søgemaskiner?

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