Beim Insert in Tabelle1, letzten wert aus Tabelle2 übernehmen

ooPP00

Neuer Benutzer
Beiträge
3
Hallo zusammen,

ich hab 2 Tabellen:
Code:
CREATE TABLE `Tabelle_1` (
    `id_nr` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
    `scanner_daten` VARCHAR(25) NOT NULL COLLATE 'utf8mb4_general_ci',
    `bez_id` SMALLINT(6) UNSIGNED NOT NULL,
    `zeitstempel` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    PRIMARY KEY (`id_nr`)
)
COLLATE='utf8mb4_general_ci'
ENGINE=InnoDB
;
CREATE TABLE `Tabelle_2` (
    `bez_id` SMALLINT(6) UNSIGNED NOT NULL AUTO_INCREMENT,
    `bezeichnung` VARCHAR(50) NOT NULL DEFAULT 'keine Bezeichnung' COLLATE 'utf8mb4_general_ci',
    `zeitstempel` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    PRIMARY KEY (`bez_id`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB
;

Ein INSERT für Tabelle_1
Code:
INSERT INTO Tabelle_1 (`scanner_daten`,`bez_id`) VALUES ('5150696111-Code6165',2)

Jetzt würde ich gern die letzte 'bez_id' von Tabelle_2 nehmen. Wie müsste ich mein Abfrage anpassen?
Oder, geht es so nicht und ich muss den Umweg gehen und zuvor eine SELECT Abfrage zu Tabelle_2 machen?

Danke für die Hilfe
 
Werbung:
In MySQL gibt es irgendetwas wie last_insert_id oder sowas, das sollte sein, was Du suchst. In PG ginge es in einem Rutsch, also in einem Statement gleichzeitig in zwei Tabellen zu Inserten und dabei die automatisch vergebene ID der einen Tabelle in der anderen zu verwenden.
 
Ich glaub wir haben uns missverstanden. Ich will nur in Tabelle_1 neue Werte schreiben mit dem letzten Wert von 'bez_id' aus Tabelle_2.
 
with last_wert as (select * from tabelle_2 order by ... limit 1) insert into tabelle_1 select 'bla', 'fasel', last_wert.spalte_x from last_wert;

Kann aber MySQL nicht.
 
Werbung:
OK, hab mal 2 Varianten für mich entdeck, falls einer einen anderen oder besseren Vorschlag hat, nur raus damit

Variante 1 mit SELECT und mit ORDER:
Code:
INSERT INTO `Tabelle_1` (`scanner_daten`,`bez_id`) VALUES ('test000', (SELECT `bez_id` FROM `Tabelle_2` ORDER BY `bez_id` DESC limit 1));

Variante 2 mit SELECT und MAX():
Code:
INSERT INTO `Tabelle_1` (`scanner_daten`,`bez_id`) VALUES ('testXXX', (SELECT MAX(`bez_id`) FROM `Tabelle_2`));

Irgendwelche Einwende?
 
Zurück
Oben