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