fik det løst, men kan ikke overskue at skrive det om til test tabeller, så her er den min query i en list anden form:
SELECT SCORE(1) score, cp.name, cp.chainid FROM competitorproduct cp WHERE CONTAINS( cp.name, (SELECT IMPLODE(CURSOR( SELECT kw.keyword FROM masterproduct mp, masterproduct_keyword kw WHERE ( kw.chainid = :chainid OR kw.chainid IS NULL ) AND kw.sku = :sku GROUP BY kw.keyword), ' ACCUM ' ) FROM DUAL), 1 ) > 0 GROUP BY SCORE(1), cp.name, cp.chainid ORDER BY SCORE(1) DESC;
der skal bruges in funktion til dette:
CREATE OR REPLACE FUNCTION IMPLODE ( p_cursor SYS_REFCURSOR, p_delimiter VARCHAR2 := ',' ) RETURN VARCHAR2 AS v_token VARCHAR2(32767); v_output VARCHAR2(32767); BEGIN LOOP FETCH p_cursor INTO v_token; EXIT WHEN p_cursor%NOTFOUND; IF v_output IS NOT NULL THEN v_output := v_output || p_delimiter; END IF; v_output := v_output || v_token; END LOOP; RETURN v_output; END IMPLODE;
Synes godt om
Ny brugerNybegynder
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.