Hej Alltid när man får problem med att få till SQL frågor så att man kan nå informationen på ett bra sätt skall man frågasätta om man har byggt upp databasen på rätt sätt. <code> Inte speciellt enkelt men funkar nog för enstaka sökningar. Sökningar med hög frekvens kommer ta onödig kraft ur servern för databasen. Tänk på riktig normalisering Nina, speciellt om databasen är till ditt jobb. Roland! Hej Nina! För att det skall bli smidigt att mata in namn kan du ha ett inmatningsfält för förnamn och ett för efternamn och i sedan ASP/VB-koden dela upp innehållet i fälten i sina ord. Eftersom jag inte kan ASP/VB, så låter jag bli att skriva kod här, men tanken är att t.ex. "Adam *Bertil David" skall delas upp i "Adam", "Bertil" och "David", vilka läggs in i varsin post i förnamnstabellen, samt att tilltalsnamnet skall anges vara "Bertil".slå ihop söksträngar?
Går det att slå ihop 2 eller 3 söksträngar?
Jag har en som heter så här:
strSQL = "SELECT fornamn, efternamn, titel, gard, info FROM gamleby WHERE fornamn LIKE '" & Request.QueryString("bokstav") & "%' order by fornamn, efternamn, gard asc"
men om det tex inte finns någon förnamn på tex T i "fornamn" så skall det finnas en sträng som säger "leta i fornamn2 istället" och se om det finns något förnamn som börjar på T där.!
Har en access-databas där jag har 3 kolumner som heter fornamn, fornamn2, fornamn3.
Jag är dålig på att förklara men hoppas någon förstår ändå :-)
mvh NinaSv: slå ihop söksträngar?
Vad jag kan förstå av din fråga så vill du leta i flera fält med förnamn
Alltså fornamn, fornamn2 o.s.v.
Om man bygger upp tabellen på så sätt byggar man även in begränsningar.
Tex om man har två fält och det sedan kommer någon med 4 eller fler förnamn
så spricker designen.
Bättre är då att ha en egen tabell med fornnamn och kan då få nästan oändligt många namn.
Sökningarna blir även mycket lättare att genomföra.
Vanligt är sådant för t.ex. en artikeltabell där man önskar ha benämning på ett antal språk och ej bör ha Benamnning_sve, Benamning_Eng osv spricker lätt tex om man sedan vill ha dit fler språk.Sv: slå ihop söksträngar?
strSQL = "SELECT fornamn, fornamn2, fornamn3, efternamn, titel, gard, info FROM gamleby WHERE fornamn LIKE '" & Request.QueryString("bokstav") & "%' OR fornamn2 LIKE '" & Request.QueryString("bokstav") & "%' OR fornamn3 LIKE '" & Request.QueryString("bokstav") & "%' order by fornamn, efternamn, gard asc"
</code>
Med denna sql-sträng letar du i alla tre kolumnerna oavsett om du hittar något i första kolumnen eller inte. Ett enkelt alternativ men kanse inte det du söker...Sv: slå ihop söksträngar?
Sv: slå ihop söksträngar?
Jag har precis skapat min databas och har endast skrivit in 8 st personer. Det är till min släktforskning som jag har på min hemsida. Jag vill helst bara ha en kolumn med förnamn för det blir snabbare och enklare när jag registrerar husförhörslängderna.
Jag trodde att det var bättre med flera förnamnskolumner, men om det är bättre att bara ha en så blir jag glad.
Kan du ge ett exempel på hur strängen då skall se ut?
mvh Nina Sv: slå ihop söksträngar?
Efter att du har beskrivit scenariot lite mer tycker jag spontant att det verkar ganska vettigt med fler förnamnskollumner om det nu är en liten, privat lösning. Men det kan bli strul när det dyker upp någon med en herrans massa förnamn. (Pippilotta Viktualia Rullgardina Krusmynta Efraimsdotter Långstrump)
Det blir lite av en smaksak och fråga om hur mycket arbete man orkar lägga ner.
Ska man vara riktigt noggrann är väl egentligen följande lösning den mest "korrekta" (Missförstå mig rätt, det hela beror på vad som passar för dig.) :
I och med att relationen mellan person och förnamn är ett ett-till-många förhållande och detsamma gäller efternamn så skulle designen kunna se ut såhär:
PersonTabell:
PersonID (Primärnyckel), Tilltalsnamn (främmande nyckel från Förnamn), Mor ,Far , Make/Maka, Född, Död, osv.
FörnamnTabell:
FörnamnID (Primärnyckel), PersonID (främmande nyckel från PersonTabell), Förnamn, SorteringsKollumn
EfternamnTabell:
EfternamnID (Primärnyckel), PersonID (främmande nyckel från PersonTabell), Förnamn, SorteringsKollumn
På det viset kan du lägga in ett obegränsat antal namn per person, samt markera vilket som är tilltalsnamnet. Du kan även ange i vilken ordning de ska sorteras. (Det är ju troligen inte i bokstavsordning. Du kan ju iofs sortera på Primärnyckeln och på så sätt ta namnen i den ordning de skapades, men det är mindre flexibelt.)
Vid inmatning kan du helt enkelt bara skriva in namnen separerade med mellanslag, göra en Split() på dem och lägga upp nya poster en efter en i förnamns- respektive efternamnstabellen.Sv: slå ihop söksträngar?
Någon annan, t.ex. Microsoft-Johan kan nog skriva koden.