Insert mit Überprüfung aus einer anderen Tabelle

Hallo Forumleser,

ich habe 2 Tabellen:

Tbl1
id, name, status (bool)

Tbl2
id, name

Nun möchte ich eine Abfrage machen, die folgendes macht:

Überprüfe, ob in Tbl1, Feld status, eine 1 steht, falls ja, dann führe ein insert aus in Tbl2.

Ausprobiert hab ich:

SELECT
CASE WHEN t.status = 1 THEN
–‘d’
INSERT INTO Tbl2 (id, name) VALUES (nextval(‘__Tbl2’), ‘test’)

END
FROM Tbl1 as t
WHERE t.status = 1;

Mit der auskommentieren ‘d’ Zeile funktioniert es, aber mit dem Insert klappt es nicht. Gibt es eine Möglichkeit wie ich dies realisieren kann?

Version: PostgreSQL 8.4

Danke für eure Hilfe
gloop

Vermutlich willst Du doch auch noch prüfen, ob für den Namen der Status true ist, oder?

Also (untested):

insert into tbl2 (id, name) select nextval(‘name der sequence’), name from tbl1 where status is true;


Andreas

Also der derzeitige Code schaut nun so aus:

INSERT INTO t_inventorystock (id, fk_item, stock_type, creationdate)
VALUES (nextval(‘__t_inventorystock’), ‘3’, ‘ITEM’, ‘2010-04-29’)
SELECT (t_itemtype as t
WHERE t.id = ‘2’ AND t.has_item_stock = 1 AND t.status = 1);

Möchte also aus Tbl1 nur 1 wert überprüfen, ob er true ist.

In diesem Fall bringt er mir ein Fehler bei dem SELECT!

gloop

tbl1 kann doch sicher mehrere Records enthalten, und daher sowohl TRUE als auch FALSE in der BOOL-Spalte, oder? Welchen Wert willst Du nun als Bedingung nutzen?


Andreas

INSERT INTO t_inventorystock (id, fk_item, stock_type, creationdate)
SELECT nextval(‘__t_inventorystock’), ‘28’, ‘ITEM’, ‘2010-04-29’
FROM t_itemtype as t WHERE t.id = ‘2’ AND t.has_item_stock = 1 AND t.status = 1

So klappt es :slight_smile:

Danke dir!