/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
Søgning efter søgeord i artikeldatabase
Fra : Jørn Andersen


Dato : 12-04-01 14:29

Hej,

Jeg har en artikeldatbase (Access 97), hvor der til hver artikel er
tilknyttet op til 4 søgeord.
Søgeordene er valgt ved opslag i en søgeordstabel i 4 "paralle" felter
(sord1, sord2, sord3, sord4).

Problemet er så: Hvordan laver jeg en forespørgsel, som søger de
artikler frem, som har tilknyttet ét, to eller flere søgeord?
Søgeordene kan være valgt helt vilkårligt i de 4 søgeord-felter.
Man skal altså kunne søge fx hest, ko, gris og fisk i alle 4 felter.

En eller anden fortalte mig, at jeg skulle bruge en hjælpetabel, men
jeg fik aldrig helt fat i, hvad hvordan han mente.

Er der nogen, der kan hjælpe?

På forhånd tak,

Jørn Andersen,
Brønshøj


 
 
Dennis Haney (13-04-2001)
Kommentar
Fra : Dennis Haney


Dato : 13-04-01 13:53


"Jørn Andersen" <jorn.a@email.dk> skrev i en meddelelse
news:3avVOlBY=S083rMc+asdThsfsnZJ@4ax.com...
> Hej,
>
> Jeg har en artikeldatbase (Access 97), hvor der til hver artikel er
> tilknyttet op til 4 søgeord.
> Søgeordene er valgt ved opslag i en søgeordstabel i 4 "paralle" felter
> (sord1, sord2, sord3, sord4).
>
> Problemet er så: Hvordan laver jeg en forespørgsel, som søger de
> artikler frem, som har tilknyttet ét, to eller flere søgeord?
> Søgeordene kan være valgt helt vilkårligt i de 4 søgeord-felter.
> Man skal altså kunne søge fx hest, ko, gris og fisk i alle 4 felter.

Jeg er ikke helt sikker på jeg forstår hvad du mener.
Vil du have en liste over de poster der kun har eet søgeord eller
tilsvarende med 2, 3, 4 og ingen?
Hvis så, så skriv lige igen...

Vil du have muligheden for at skrive et ord og så søger den alle søgeordne
igennem?

select * from db where sord1 like 'fisk%'
union
select * from db where sord2 like 'fisk%'
union
select * from db where sord3 like 'fisk%'
union
select * from db where sord4 like 'fisk%'


>
> En eller anden fortalte mig, at jeg skulle bruge en hjælpetabel, men
> jeg fik aldrig helt fat i, hvad hvordan han mente.

create table tmphjælp select primærnøgle, sord1 as sord from db;
insert into tmphjælp select primærnøgle, sord2 from db;
insert into tmphjælp select primærnøgle, sord3 from db;
insert into tmphjælp select primærnøgle, sord4 from db;
create table hjælp select distinct * from tmphjælp;
create index hjælpindex on hjælp (sord,primærnøgle)
drop table tmphjælp;

Så kan du søge på

select db.* from db, hjælp where db.primærnøgle=hjælp.primærnøgle and
hjælp.sord like 'fisk%';

pointen er:
Dette virker i MySQL.
hjælp skal kun genereres een gang (hvis det er en statisk database elers
husk at opdater den)
Det er hurtigere, da du søger på et index og svaret ligger i indexet og
derefter joiner på en primærnøgle.


>
> Er der nogen, der kan hjælpe?

håber det var hjælp nok.

Dennis

>
> På forhånd tak,
>
> Jørn Andersen,
> Brønshøj
>



Jørn Andersen (14-04-2001)
Kommentar
Fra : Jørn Andersen


Dato : 14-04-01 01:38

On Fri, 13 Apr 2001 14:52:34 +0200, "Dennis Haney" <davh@davh.adsl.dk>
wrote:

Hej Dennis,

<SNIP en masse gode ideer>

>håber det var hjælp nok.

Noget af det gik hen over hovedet på mig - jeg er ikke just nogen
SQL-nørd.

Til gengæld hjalp du mig på sporet af det, jeg i virkeligheden
eftersøgte, nemlig "mange-til-mange-relationer", og efter at have læst
lidt i Access-hjælpen gik det op for mig, hvad det var den hjælpetabel
skulle bruges til

Så jeg har altså omstruktureret min database - hvilket desuden giver
den fordel, at jeg ikke er bundet til et bestemt antal søgeord.
Det giver godt nok en lidt kompleks SQL - til gengæld kan den kopieres
direkte fra Access-forespørgslen og over til ASP, som jeg i sidste
instans skulle bruge den til.

Efterhånden får jeg nok lært, hvad alle disse JOIN's betyder - det er
lidt lettere (i hvert fald for mig) at oveskue en Access-forespørgsel
end en SQL-sætning med 5 INNER JOIN's ...

Så mange tak for hjælpen. Selv om jeg ikke direkte brugte din løsning,
så hjalp den mig på rette spor.

Mvh.
Jørn

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


Dennis Haney (20-04-2001)
Kommentar
Fra : Dennis Haney


Dato : 20-04-01 09:54


"Jørn Andersen" <jorn.a@email.dk> skrev i en meddelelse
news:ZJnXOm6OKYowYnU3WJk5CGEszmCc@4ax.com...
> On Fri, 13 Apr 2001 14:52:34 +0200, "Dennis Haney" <davh@davh.adsl.dk>
> wrote:
>
> Hej Dennis,
>
> <SNIP en masse gode ideer>
>
> >håber det var hjælp nok.
>
> Noget af det gik hen over hovedet på mig - jeg er ikke just nogen
> SQL-nørd.

> Til gengæld hjalp du mig på sporet af det, jeg i virkeligheden
> eftersøgte, nemlig "mange-til-mange-relationer", og efter at have læst
> lidt i Access-hjælpen gik det op for mig, hvad det var den hjælpetabel
> skulle bruges til

> Så jeg har altså omstruktureret min database - hvilket desuden giver
> den fordel, at jeg ikke er bundet til et bestemt antal søgeord.

Det er jo lækkert nok.

> Det giver godt nok en lidt kompleks SQL - til gengæld kan den kopieres
> direkte fra Access-forespørgslen og over til ASP, som jeg i sidste
> instans skulle bruge den til.

kompleks er ok, hvis det kun laves en gang og man husker at skrive hvad man
har lavet og hvorfor...

> Efterhånden får jeg nok lært, hvad alle disse JOIN's betyder - det er
> lidt lettere (i hvert fald for mig) at oveskue en Access-forespørgsel
> end en SQL-sætning med 5 INNER JOIN's ...

Tja, lige på det punkt tror jeg ikke jeg kan blive enig med dig ;)

> Så mange tak for hjælpen. Selv om jeg ikke direkte brugte din løsning,
> så hjalp den mig på rette spor.

Velbekommen.

Dennis



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

Månedens bedste
Årets bedste
Sidste års bedste