Avatar billede mahyar Nybegynder
02. juni 2009 - 14:43 Der er 6 kommentarer og
1 løsning

SQL til søgning

hej jeg har nedenstående sql som jeg bruger til at søge efter firma'er. Jeg vil gerne have at resultatlisten viser mig den post som er tættest på de indtastede søgekriterier først på listen.

eks:
hvis jeg søger efter "*Microsoft", så vil jeg gerne have at microsoft bliver vist som min første post i resultatlisten.

min sql:

ALTER PROCEDURE [dbo].[stp_FindFirma]
     
      @Navn  Nvarchar(50),                       
      @Adresse  Nvarchar(50),                                 
      @Postnr    Nvarchar(50),                       
      @Distrikt    Nvarchar(50),                         
      @Omraade        Nvarchar(50),
      @Tlf        Nvarchar(50),
@FaggruppeID int

AS
BEGIN
    SELECT  Firma.FirmaID, Firma.Navn, Adresse, Postnr, Distrikt, Email, Hjemmeside, CVR, Beskrivelse, Omraade, Tlf, Dato,Branche,
(SELECT  Count(Firma.FirmaID) as Antal FROM Firma join FaggruppeFirma on FaggruppeFirma.FirmaID = Firma.FirmaID
WHERE  Firma.Enabled = 1 AND( Firma.Navn LIKE @Navn OR Adresse LIKE @Adresse OR Postnr LIKE @Postnr OR Distrikt LIKE @Distrikt OR Omraade LIKE @Omraade  OR Tlf LIKE @Tlf OR FaggruppeFirma.FaggruppeID = @FaggruppeID )  ) as Antal

FROM Firma join
FaggruppeFirma on
FaggruppeFirma.FirmaID = Firma.FirmaID


WHERE  Firma.Enabled = 1 AND( Firma.Navn LIKE @Navn OR Adresse LIKE @Adresse OR Postnr LIKE @Postnr OR Distrikt LIKE @Distrikt OR Omraade LIKE @Omraade  OR Tlf LIKE @Tlf OR FaggruppeFirma.FaggruppeID = @FaggruppeID  )

--ORDER BY Firma.Point desc



END
Avatar billede Syska Mester
02. juni 2009 - 16:08 #1
Udover din query nok er langsom når du har 100 millioner rows ...

Hvad får du da ud af resultat lige nu ?
Avatar billede mahyar Nybegynder
02. juni 2009 - 17:06 #2
Jeg får et resultatsæt der passer til de indtastede kriterier, men jeg vil have den til at returnere et resultatsæt, der er sorteret efter de poster der er tættest på de indtastede kriterier. Lige nu, får jeg det hele usorteret.
Avatar billede Syska Mester
02. juni 2009 - 18:08 #3
Jamen ... så skal du jo til at vægte de forskellige kriterier ... og finde ud af hvad der angiver om det er tæt på .. eller langt fra ...

er 09000000 meget tæt på 900000001

tæt på da der er mange nuller i begge ... men det ved computeren jo ik'.

Så efter mine erfaring er det ikke noget man bare lige laver :-)

// ouT
Avatar billede mahyar Nybegynder
02. juni 2009 - 18:31 #4
det der med vægtning er faktisk en rigtig god idé. send lige et svar så du kan få point. Jeg tror det vil løses med vægtning.
Avatar billede Syska Mester
02. juni 2009 - 19:06 #5
svar.

Men hvordan det skal laves præcis har jeg ingen ide om ... men jeg hører da gerne hvad du når frem til ... :-)

Måske du er den nye google *heheh*

// ouT
Avatar billede Syska Mester
02. juni 2009 - 19:07 #6
svar
Avatar billede mahyar Nybegynder
02. juni 2009 - 19:41 #7
hehe nej jeg er langt fra google :)

Men skal nok fortælle dig hvordan jeg har tænkt mig at gøre det.
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
Computerworld tilbyder specialiserede kurser i database-management

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