SP:n
PROCEDURE `procUseTemp`(sIds varchar(1000))
BEGIN
DECLARE FirstPos INT;
DECLARE FirstPos1 INT;
DECLARE SecondPos INT;
SET FirstPos=1;
IF (LENGTH(sIds) > 0) THEN
DROP TABLE IF EXISTS TempTable;
CREATE TEMPORARY TABLE TempTable(id int) ENGINE=MEMORY;
SET SecondPos = LOCATE(',',sIds,FirstPos);
WHILE (SecondPos>0) DO
INSERT INTO TempTable
VALUES(cast(substring(sIds, FirstPos, (SecondPos - FirstPos)) as unsigned INT));
set FirstPos=SecondPos+1;
SET SecondPos=LOCATE(',',sIds,FirstPos);
END WHILE;
INSERT INTO TempTable
VALUES(cast(right(sIds, LENGTH(sIds) - FirstPos + 1 ) as unsigned INT));
END IF;
END;
Om jag kör denna så får jag felet: Unknown column node.RelId in 'on clause'
CALL procUseTemp('6');
SELECT distinct(node.id)
FROM categories AS node,categories AS parent
INNER JOIN temptable AS tmp
ON tmp.ID = node.RelId
WHERE node.lft BETWEEN parent.lft AND parent.rgt
Denna fullar men ger fel resultat:
CALL procUseTemp('6');
SELECT distinct(node.id),node.RelId
FROM categories AS node
INNER JOIN categories AS parent
ON node.lft BETWEEN parent.lft AND parent.rgt
INNER JOIN temptable AS tmp
ON tmp.ID = node.RelId