14. november 2006 - 16:02Der er
3 kommentarer og 1 løsning
Find ord i to tabeller og lav link til denne post
Hej
Jeg skal lave en søge funktion, som gennemsøger 3 tabeller for et søge ord. Jeg har forsøgt lidt med UNION funktioner og det fungere.
Set findsql = ObjConn.Execute("(SELECT DISTINCT message FROM weblog WHERE message LIKE '%" & stringsrc & "%' OR subject LIKE '%" & stringsrc & "%') UNION (SELECT DISTINCT message FROM forum WHERE message LIKE '%" & stringsrc & "%' OR subject LIKE '%" & stringsrc & "%')")
Mit problem er hvis jeg skal lave et link til den side hvor posten høre til, så bliver jeg nød til at vide hvilken af de 3 tabeller posten ligger ?! Hvordan gør man det ?
Først vil jeg finde ID numre fra 3 forskellige tabeller på besked i disse tabeller som indeholder søgeordet. Derefter skal jeg bruge disse ID numre til at lave link til beskeden. Men da de beskeder kan lægge i tre forskelle tabeller, så må jeg vide hvilken tabel ID'et stammer fra. Det skal bruges til en søge funktion i 3 forskellige forums. Håber det hjælper lidt.
Du skal først og fremmeste have dit id-nummer med i din query. Som jeg har forstået det, så har du kun "message"-kolonnen med (SELECT DISTINCT message, id FROM ...).
Du behøver nu ikke bruge union, da dette ikke helt er brugbart i din situation. Lav evt. blot tre separate queries, og loop igennem dem hver for sig når du skal vise resultatet. De vil alligevel lægges sammen i samme rækkefølge når du bruger en UNION, og da du ikke efterfølgende sorterer dine resultater i din query, så vil du få præcis det samme resultat rent funktionsmæssigt.
Brug databasen til det den er bedst til, og hold resten i din klientapplikation :).
Okay, det var nu også en fejl at id ikke var kommet med. Har aldrig brugt UNION før, så jeg køre bare en tradionelle metode som du beskriver tak for input. Smid et svar så jeg kan give dig point.
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.