Update Feldwert in einer Tabelle mit concatiniertem Wert aus einer anderen Tabelle

vogste

Benutzer
Beiträge
23
Hallo Forum,

ich habe eine Problemstellung und stehe auf dem Schlauch. Ich habe eine Tabelle T_PRO_DAT dort sind die Projektleiter drin gepfelgt. Leider mit dem Anmeldenamen. Zukünftig sollen die Projektleiter aber mit Ihren Langnamen (Nachname, Vorname) gelistet werden. Der Langname soll aus der Tabelle T_PRS_DAT und hier aus den Feldern s_user und s_first_name zusammengeschrieben werden. Die beiden Tabellen haben eine je c_ic Spalte in der die Nummern identisch sind, daher dachte ich eigentlich, dass es kein grosses Hexenwerk sein kann. Aber....

Abfrage Tabelle 1 (T_PRO_DAT):
SELECT tpd_cic, pse_proleader
FROM t_pro_dat;

Ergebnis:
TPD_CIC PSE_PROLEADER
---------------------- ------------------------
1995 BISMAR
1136 WERMAR
1963 GARMEI
1534 BARALC
10275 NIKREU

Abfrage Tabelle 2:
SELECT tp.c_ic, tp.s_user||', '||tp.s_first_name as user_name
FROM t_prs_dat tp;

Quelle Tabelle 2 (T_PRS_DAT):
C_IC S_USER S_FIRST_NAME
---------------------- ----------------------------- --------------------------------
1995 Bisping Michael
1136 Wertner Maria
1963 Gartner Meike
1534 Barcce Alcec
10275 Nikolaus Reuben

Ergebnis Tabelle 2 (T_PRS_DAT):
C_IC USER_NAME
---------------------- --------------------------------------------------------------
1995 Bisping, Michael
1136 Wertner, Maria
1963 Gartner, Meike
1534 Barcce, Alcec
10275 Nikolaus, Reuben

Update:
UPDATE t_pro_dat tpd
set tpd.pse_proleader = (SELECT tp.s_user||', '||tp.s_first_name as tp.user_name FROM t_prs_dat tp where tpd.c_ic = tp.c_ic)

Erwartetes Ergebnis:
Tabelle 1 (T_PRO_DAT)

C_IC PSE_PROLEADER
---------------------- --------------------------------------------------------------
1995 Bisping, Michael
1136 Wertner, Maria
1963 Gartner, Meike
1534 Barcce, Alcec
10275 Nikolaus, Reuben


Über einen Tip wo mein Problem liegt würde ich mich sehr freuen.
Danke schon mal vorab.

Gruss
Stephan
 
Werbung:
Hallo Forum,

ich habe eine Problemstellung

Diese lautet:

Code:
test=*# select * from t1;
 id | kurz
----+------
  1 | ak
  2 | mm
(2 rows)

test=*# select * from t2;
 id |  vn  |  nn
----+---------+------------
  1 | andreas | kretschmer
  2 | max  | mustermann
(2 rows)

Lösung:

Code:
test=*# update t1 set kurz = t2.vn || ' ' || t2.nn from t2 where t1.id=t2.id;
UPDATE 2
test=*# select * from t1;
 id |  kurz
----+--------------------
  1 | andreas kretschmer
  2 | max mustermann
(2 rows)
 
Hallo akretschmer,

erst mal vielen Dank für die schnelle Hilfe. Aber trotz hin und her rutschen stehe ich immer noch auf der Leitung:

So sieht im SQL-Developer-Arbeitsblatt mein Updatebefehl aus:

UPDATE t_pro_dat set pse_proleader=t_prs_dat.s_user||', '||t_prs_dat.s_first_name FROM t_prs_dat where t_pro_dat.kpr_cic=t_prs_dat.c_ic;

Dann kommt folgende Fehlermeldung:
Fehler beim Start in Zeile 7 in Befehl:
UPDATE t_pro_dat set pse_proleader=t_prs_dat.s_user||', '||t_prs_dat.s_first_name FROM t_prs_dat where t_pro_dat.kpr_cic=t_prs_dat.c_ic
Fehler bei Befehlszeile:7 Spalte:82
Fehlerbericht:
SQL-Fehler: ORA-00933: SQL-Befehl wurde nicht korrekt beendet
00933. 00000 - "SQL command not properly ended"
*Cause:
*Action:

Was bedeuten Deine test=*# Infos.

Danke und Gruss
Stephan
 
Werbung:
Den Fehler selber gefunden:

UPDATE t_pro_dat SET t_pro_dat.pse_proleader = (select t_prs_dat.s_user||', '||t_prs_dat.s_first_name FROM t_prs_dat WHERE t_pro_dat.kpr_cic=t_prs_dat.c_ic);

schon funktioniert es.

Danke und Gruss
 
Zurück
Oben