Linuchs: Mandant zum Üben in dieselbe Tabelle kopieren

Moin,

vor drei Wochen hatte ich ein ähnliches Thema, nämlich Daten eines Mandanten 1:1 in eine andere DB zu übernehmen.

Doch das Prinzip scheint nicht zu funktionieren, wenn ich mit den Daten des Mandanten 14 für Schulung den Mandanten 15 in derselben DB, selbe Tabelle einrichten möchte.

Fehlermeldung: #1064 - You have an error ... at line 13

INSERT INTO tm_slots (
 owner_id
,nr
,datum
,tag_nr
,uhr_von
,uhr_bis
,autom_setzen
,loe_kz

) VALUES (

SELECT
 '15'
,nr
,datum
,tag_nr
,uhr_von
,uhr_bis
,autom_setzen
,loe_kz
FROM  tm_slots
WHERE owner_id = 14
)

Ich habe in anderen SELECTS durchaus Konstanten drin. Warum nicht hier?

Linuchs

  1. Tach!

    Doch das Prinzip scheint nicht zu funktionieren, wenn ich mit den Daten des Mandanten 14 für Schulung den Mandanten 15 in derselben DB, selbe Tabelle einrichten möchte.

    Doch das geht, nur darf man keine Phantasiesyntax dafür verwenden.

    Fehlermeldung: #1064 - You have an error ... at line 13

    Schau bitte ins MySQL-Handbuch Kapitel: SQL Statement Syntax → Data Manipulation Statements → INSERT → INSERT ... SELECT

    dedlfix.

    1. Hallo dedfix,

      Doch das geht, nur darf man keine Phantasiesyntax dafür verwenden.

      Schau bitte ins MySQL-Handbuch Kapitel: SQL Statement Syntax → Data Manipulation Statements → INSERT → INSERT ... SELECT

      Muss ich noch lesen, aber es geht wohl auch mit einer temporären Tabelle, das kannte ich noch nicht. Die Rückmeldung sieht gut aus:

      CREATE TEMPORARY TABLE tmp_slots SELECT *
      FROM tm_slots
      WHERE owner_id =14;# 34 Zeile(n) betroffen.
      UPDATE tmp_slots SET id = NULL ,
      owner_id =15;# 34 Zeile(n) betroffen.
      INSERT INTO tm_slots
      SELECT *
      FROM tmp_slots;# 34 Zeile(n) betroffen.
      

      Linuchs

  2. Hi,

    vor drei Wochen hatte ich ein ähnliches Thema, nämlich Daten eines Mandanten 1:1 in eine andere DB zu übernehmen.

    Fehlermeldung: #1064 - You have an error ... at line 13

    Es ist immer gut, die Fehlermeldung nur verstümmelt an Helfende weiterzugeben.

    INSERT INTO tm_slots (
     owner_id
    ,nr
    ,datum
    ,tag_nr
    ,uhr_von
    ,uhr_bis
    ,autom_setzen
    ,loe_kz
    
    ) VALUES (
    
    SELECT
     '15'
    ,nr
    ,datum
    ,tag_nr
    ,uhr_von
    ,uhr_bis
    ,autom_setzen
    ,loe_kz
    FROM  tm_slots
    WHERE owner_id = 14
    )
    

    Ich habe in anderen SELECTS durchaus Konstanten drin. Warum nicht hier?

    Die Konstante ist nicht das Problem, MySQL zählt Zeilen m.W. ab 1, nicht ab 0.

    Du vermischst, wie dedlfix schon andeutete, die Syntax von INSERT ... SELECT und INSERT.

    cu,
    Andreas a/k/a MudGuard