warum funktioniert INSERT INTO nicht ???

Hallo, habe folgende Tabelle erstellt(pgAdmin):

CREATE TABLE pda.dienststelle_kh_alk
(
id numeric,
geom geometry,
gemarkung varchar,
flur varchar,
zaehler varchar,
nenner varchar,
flaeche_geom float8,
code varchar
)
WITHOUT OIDS;
ALTER TABLE pda.dienststelle_kh_alk OWNER TO postgres;
COMMENT ON TABLE pda.dienststelle_kh_alk IS ‘ALK’;

>> Spalte Code ist leer - soll mit gemarkung/flur-zaehler/nenner gefüllt werden (also ein code aus gemarkung/flur…)

mein SQL:

INSERT INTO pda.dienststelle_kh_alk (code)
select gemarkung ||‘/’ || flur ||‘-’ || zaehler ||‘/’ || nenner
from pda.dienststelle_kh_alk;

Bekomme auch ne Meldung, das aktion erfolgreich war…
Spalte bleibt aber leer !!!

wenn ich das Ergebnis in eine extra Tabelle schreibe funkts…

VERSTEHE NICHT WARUM !!???

hat jemand eine Idee ???

DANKE V.botzer

Kapsele mal den Subselect in Klammern …

meinste so : ??


INSERT INTO pda.dienststelle_kh_alk (code)
select ( gemarkung || ‘/’ || flur || ‘-’ || zaehler || ‘/’ || nenner )
from pda.dienststelle_kh_alk;

bringt leider auch nix…

nerv

Nein, so in etwa:

INSERT INTO table (column1, column 2) VALUES ( (SELECT …), ‘value column 2’)

Das Ergebnis des Subselects, den du komplett in Klammern packst, bildet dann den Wert, der eingefügt wird.

hi - muß zugeben das ich die logik nit ganz kapier - und damit auch die fehler nit rausbekomm: wie solls aussehen???

INSERT INTO pda.dienststelle_kh_alk (code)
VALUES ((select ‘gemarkung’ || ‘/’ || ‘flur’ || ‘-’ || ‘zaehler’ || ‘/’ || ‘nenner’) from pda.dienststelle_kh_alk);

Syntax error at or near from…

( die einfache select abfrage funkt!!!)

verzweifelnder v.

Wenn ich das richtig lese, lautet dein innerer Query:

(select ‘gemarkung’ || ‘/’ || ‘flur’ || ‘-’ || ‘zaehler’ || ‘/’ || ‘nenner’) from pda.dienststelle_kh_alk

Da ist das ) falsch gesetzt, gehört ans Ende des Queries, hinter den Tabellennamen.

Hi, theoretisch funkts wie folgt:

INSERT INTO pda.test (code)
VALUES ((select gemarkung || ‘/’ || flur || ‘-’ || zaehler || ‘/’ || nenner from pda.test));

ABER:

es wird immer eine neue Zeile erstellt, in der dann nur der Code steht - bräuchte ich da dann UPDATE ?
wieso schreibt es es nit einfach in die Spalte Code ??

BPS:

Zeile…Gemarkung…flur…zaehler…nenner…code
…1…9999…8…7…6…
…2…9999/8-7/6

jemand ne idee ?

gruß V°[/img]

Irgendwie komme ich nicht mehr ganz mit, kannst du mal ein paar Zeilen der Originaltabelle posten und wie das Ergebnis deiner Meinung nach in der Zieltabelle aussehen soll?
Füg bitte die Tabellendefinitionen von beiden Tabellen auch mit hinzu.


Danke

zu danken hab ja wohl ich !! :wink:

es gibt nur eine Tabelle !!
also die tabellendefinition ist wie folgt:

CREATE TABLE pda.dienststelle_kh_alk
(
id numeric,
geom geometry,
gemarkung varchar,
flur varchar,
zaehler varchar,
nenner varchar,
flaeche_geom float8
code varchar
)
WITHOUT OIDS;

In die in dieser Tabelle enthaltene Spalte code soll geschrieben werden, und zwar eine zusammensetzung aus den spalten gemarkung/flur-zaehler/nenner… z.B. 9999/8-7/6


Beipiel für die Originaltabelle:

ID…gemarkung…flur…zaehler…nenner…code
.1…9999…8…7…6…


Beispiel für die Tabelle nach dem insert into:

BPS:

ID…Gemarkung…flur…zaehler…nenner…code
…1…9999…8…7…6…
…2…9999/8-7/6

ZIEL:
ID…Gemarkung…flur…zaehler…nenner…code
…1…9999…8…7…6…9999/8-7/6



…erscheint mir einfach nit ganz logisch - das er ne extra zeile produziert !!!

warum ??? DANK !!

aahhh - hab viel zu kompliziert gedacht… 8-[

geht doch ganz einfach:


UPDATE pda.dienststelle_kh_alk
SET code= (gemarkung || ‘/’ || flur || ‘-’ || zaehler || ‘/’ || nenner)

DAS WARS !!!

…trotzdem vielen Dank !!