du skal ikke have WHERE på når du indsætter. kun når du bruger SELECT, UPDATE eller DELETE.
-  SET @EMNE = 'noget';
 -  INSERT INTO CONCAT(@EMNE,'_katalog') (field) VALUES('blahblah');
 
Virker ikke, så det har ikke noget med WHERE at gøre.
(Jeg indsatte bare WHERE i ovenstående for at illustrere, at der sker noget mere efterfølgende)
P.t. ser min kode således ud:
-  SET @DK5 = '59';
 -  SET @EMNE = 'natviden';
 -  
 -  SET @TABLE = CONCAT('libra_emne_',@EMNE,'_',@DK5);
 -  SET @EMNEID = CONCAT(@EMNE,'_id');
 -  SET @EMNEEMNE = CONCAT(@EMNE,'_emne');
 -  
 -  DROP TEMPORARY TABLE IF EXISTS temp_emneord;
 -  
 -  CREATE TEMPORARY TABLE temp_emneord (
 -      emneord_id varchar(13) NOT NULL
 -  );
 -  
 -  CREATE TABLE IF NOT EXISTS @TABLE (    
 -      @EMNEID varchar(13) NOT NULL,
 -      @EMNEEMNE varchar(128) NOT NULL
 -  );
 -  
 -  INSERT INTO temp_emneord (emneord_id)
 -      SELECT katalog_id
 -      FROM libra_katalog
 -      WHERE katalog_hovedfelt = '652'
 -      AND katalog_delfelt = 'm'
 -      AND SUBSTRING(katalog_datafelt, 1, 2) = @DK5;
 -      
 -  INSERT IGNORE INTO @TABLE (@EMNEID, @EMNEEMNE)
 -      SELECT k.katalog_id, k.katalog_datafelt
 -      FROM libra_katalog k
 -      INNER JOIN temp_emneord t
 -      ON t.emneord_id = k.katalog_id
 -      WHERE katalog_hovedfelt = '666'
 -      AND katalog_delfelt = 'f';
 -      
 -  SELECT DISTINCT e.@EMNEID, e.@EMNEEMNE
 -      FROM @TABLE e
 -      INNER JOIN libra_registered r
 -      WHERE e.@EMNEID = r.registered_id
 -      ORDER BY e.@EMNEEMNE ASC;
 -      
 -  DROP TEMPORARY TABLE IF EXISTS temp_emneord;
 
Det er gennemtestet uden brug af variabler og fungerer således fint.
						
						
						
						
		
							Indlæg senest redigeret d. 26.09.2012 12:41 af Bruger #16927