Avatar billede rosenbeck Nybegynder
01. april 2003 - 15:00 Der er 3 kommentarer og
1 løsning

SQL søgealgoritme - match kundens spørgsmål og 'answer' kolonne..

Hej

Jeg har en database med kolonner id,answer og et spørgsmål fra en kunde jeg gerne vil matche op imod answer kolonnen. Resultatet skal være de id'er, hvor der er et match..

Ex kundespørgsmål:
Hvornår sender i en mail tilbud på min forespørgsel og kan jeg betale pr efterkrav"

Ex på id og answer kolonner:
1 *Handel med *udlandet/Grønland/Island/Færøerne foregår via Business Communications. Du kan sende en *mail til mig.

2 Betaling sker ved modtagelsen. Du skal betale, når postbudet leverer varerne på din adresse, eller du selv afhenter dem på posthuset.

3 At sende pr efterkrav koster 59 kroner. Herudover skal du betale 8 kr. Det er ikke muligt at betale på afbetaling. 

Der skulle gerne findes et match ved id 1 og 3.

Tillægsspørgsmål: Jeg har mulighed for at oprette en tabel eller kolonne, hvor keywords = ord med * foran findes. Er der nogen der har et forslag til en søgning der giver id match, hvis keywords er tilstede i kundens spørgsmål..
Avatar billede arne_v Ekspert
01. april 2003 - 22:03 #1
T_answer
--------
id int
answer varchar

T_keyword
---------
id
keyword

T_answer_keyword
----------------
answer_id
keyword_id

SELECT answer FROM T_answer where id IN
(SELECT T_answer_keyword.answer_id FROM T_answer_keyword,T_keyword
WHERE T_answer_keyword.keyword_id=T_keyword.id AND T_keyword.keyword='XXXX')
Avatar billede rosenbeck Nybegynder
02. april 2003 - 09:07 #2
Jeg kan godt se idéen med en select inden i en select statement kombineret med brugen af "IN" - men der returneres et answer som resultat, det jeg ønsker er en "ranked" liste over de id'er (måske "group by"..) , hvor der er et match. Hvis der er flere match indenfor et givet answer - skal dette id rankes højere etc...
Avatar billede arne_v Ekspert
02. april 2003 - 09:33 #3
Jeg tror det er svært at lave i ren SQL !

Noget i den her stil måske (jeg har ikke testet om det er valid SQL):

SELECT T_answer.answer,count(*) AS n
FROM T_answer,T_answer_keyword,T_keyword
WHERE T_answer.id=T_answer_keyword.answer_id AND
      T_answer_keyword.keyword_id=T_keyword.id AND
      T_keyword IN ('XXXX', 'YYYY', 'ZZZZ')
GROUP BY T_answer.answer
ORDER BY n;
Avatar billede rosenbeck Nybegynder
02. april 2003 - 10:48 #4
Tak for indsatsen arne_v - jeg prøver at følge dine dessiner i SQL Query Analyzer og ser om jeg kan få bygget en valid Sql søgealgoritme op - tak..
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