|
| 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
| |
|
|