webForumDet fria alternativet

Unknown column node.RelId in 'on clause'

Databaser & SQL

1 svar · 396 visningar · startad av Travoni

Medlem sedan okt. 20041 556 inlägg
Frågan#1

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
Medlem sedan okt. 20041 556 inlägg
#2
CALL procUseTemp('6');
SELECT distinct(node.id)
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 = [B]parent.Id[/B]
256 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
129 ms — deklarationer (db)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)
116 ms — ändringar (db)