/ 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
Sql-sætning (søgning i kombination af kolo~
Fra : Peter Jensen


Dato : 28-01-03 18:46

Hej

Jeg har en mysql-database, hvori der findes en tabel med personer,
indeholdende kolonner med fornavne og efternavne.
Via en web-formular vil jeg gerne kunne søge på disse folk udfra et enkelt
tekstfelt (vha. php).
Jeg har prøvet med noget lignende:
SELECT * FROM Personer WHERE Fornavne LIKE '%".$soeg."%' OR Efternavn LIKE
'%".$soeg."%'"

Dette virker fint så længe man kun indtaster et fornavn eller et efternavn.
Hvordan laver jeg en go sql-sætning (eller evt. noget php-kode), der gør det
muligt at søge i databasen udfra alle mulige kombinationer af fornavn og
efternavn (fra et enkelt tekst-felt)?

Man ser f.eks. noget lignende på bibliotekernes hjemmeside, hvor man kan
søge i forfattere både udfra [fornavn efternavn] eller [efternavn, fornavn]
eller bare [fornavn]

På forhånd tak.

Peter






 
 
Jens Gyldenkærne Cla~ (28-01-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 28-01-03 21:59

Peter Jensen skrev:

> SELECT * FROM Personer WHERE Fornavne LIKE '%".$soeg."%' OR
> Efternavn LIKE '%".$soeg."%'"

> Dette virker fint så længe man kun indtaster et fornavn eller
> et efternavn. Hvordan laver jeg en go sql-sætning (eller evt.
> noget php-kode), der gør det muligt at søge i databasen udfra
> alle mulige kombinationer af fornavn og efternavn (fra et
> enkelt tekst-felt)?

Du kan fx skrive:

((Fornavn + ' ' + Efternavn) LIKE %$soeg%) OR
((Efternavn + ' ' + Fornavn) LIKE %$soeg%)

NB: Jeg er ikke php/mySQL-mand, så der skal sikkert rettes lidt i
strengsammensætningerne.
--
Jens Gyldenkærne Clausen
MF (medlem af FIDUSO - www.fiduso.dk)
I ovenstående tekst benyttes nyt komma.

Peter Jensen (29-01-2003)
Kommentar
Fra : Peter Jensen


Dato : 29-01-03 00:21

> Du kan fx skrive:
>
> ((Fornavn + ' ' + Efternavn) LIKE %$soeg%) OR
> ((Efternavn + ' ' + Fornavn) LIKE %$soeg%)

Mange tak for hjælpen. Jeg kan dog - som du selv antyder ikke helt
gennemskue strengsammensætningen. Det virker ikke med +'er eller &'er. Er
det overhovedet tilladt at sammensætte i en SQL-sætning?

/Peter





Peter Brodersen (29-01-2003)
Kommentar
Fra : Peter Brodersen


Dato : 29-01-03 00:51

On Wed, 29 Jan 2003 00:21:25 +0100, "Peter Jensen" <peter@albireo.dk>
wrote:

>Mange tak for hjælpen. Jeg kan dog - som du selv antyder ikke helt
>gennemskue strengsammensætningen. Det virker ikke med +'er eller &'er. Er
>det overhovedet tilladt at sammensætte i en SQL-sætning?

Ja, man kan bruge CONCAT-funktionen, der tager et vilkårligt antal
argumenter og sætter dem sammen, fx:

.... WHERE CONCAT(Fornavne,' ',Efternavn) LIKE '%søgeord%'
OR CONCAT(Efternavn,', ',Fornavne) LIKE '%søgeord%'

Jeg går her ud fra at dine to felter hedder "Fornavne" og "Efternavn".

Begge where-clauses vil acceptere, at man blot søger efter fornavn
eller efternavn.

--
- Peter Brodersen

Peter Jensen (29-01-2003)
Kommentar
Fra : Peter Jensen


Dato : 29-01-03 11:01


> Ja, man kan bruge CONCAT-funktionen, der tager et vilkårligt antal
> argumenter og sætter dem sammen, fx:
>
> ... WHERE CONCAT(Fornavne,' ',Efternavn) LIKE '%søgeord%'
> OR CONCAT(Efternavn,', ',Fornavne) LIKE '%søgeord%'
>
> Jeg går her ud fra at dine to felter hedder "Fornavne" og "Efternavn".
>
> Begge where-clauses vil acceptere, at man blot søger efter fornavn
> eller efternavn.

FEDT! Det virker! Tusinde tak for hjælpen!!

Mvh /Peter



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

Månedens bedste
Årets bedste
Sidste års bedste