PL SQL Abfrage Vergleich von Werten

Hallo ich habe folgendes Problem:
ich habe zwei Tabellen subject_item und import
ich möchte nun aus der tabelle import die Werte in die
Tabelle subject_item hinzufügen aber nur wenn keine
der einzufügenden Zahlen bislang in der Tabelle subject_item vorkommt

bedeutet also ich brauche ein Prüf-Mechanismus ob der
Eintrag T999 in subject_item.subject vorkommt, wenn
nicht dann muss ich das gleiche mit der item_id übeprüfen.

Sobald auch nur einer der beiden Werte vorkommt soll
eine Fehlermeldung in eine Protokolldatei geschrieben werden.

ich bin leider noch neueinsteiger in Sachen SQL und benötige dringend Hilfe

Liebe Grüße und Vielen Dank im Voraus

Tabname: subject_item
subject item_id
t000 2
t111 5
t222 8
t333 12
t444 20

Tabname: import
subject item_id
t999 15
t111 23
t444 20

Nach dem hinzufügen sollte die Tabelle also so aussehen:
Tabname: sap_subject_item
subject item_id
t000 2
t111 5
t222 8
t333 12
t444 20
t999 15

Protokoll:
T111 23 mindestens einer der Werte ist bereits vorhanden
T444 20 mindestens einer der Werte ist bereits vorhanden

insert into sap_subject_item
select subject, item_id from import
where subject not in
(select subject from sap_subject_item)

Hallo,

auslesen der ersten Tabelle und das Protokoll erstellen habe ich so gelöst:

select s.subject, " „, s.item_id,“"
from subject_item as s

union

select i.subject, " „, i.item_id, " mindestens einer der Werte ist bereits vorhanden“
from import as i, subject_item as s
where (i.subject = s.subject) or (i.item_id = s.item_id)

Leider fällt mir zu dem Thema Vergleich der Tabellen und anfügen nicht vorhandener Einträge an eine der Tabellen nichts ein.

Ich hoffe, es gibt noch einen anderen Hinweis von jemanden.

Deine Abfrage habe ich empfangen. Muß die Sache zuerst mal selbst untersuchen. Bis bald!

Hallo it_ecki,
folgende zwei SQL-Statements würden das gewünschte Ergebnis erzeugen :

insert into sap_subject_item
(select * from subject_item
union
select * from import
where subject not in (select subject from subject_item)
and item_id not in (select item_id from subject_item);
);

(nimmt alle Zeilen aus SUBJECT_ITEM und ergänzt diese um alle ‚neuen‘ Zeilen aus IMPORT und trägt diese in die Tabelle SAP_SUBJECT_ITEM ein)

select subject ||’ ‚|| item_id ||‘ mindestens einer der Werte ist bereits vorhanden ’ as Text from import
where subject in (select subject from subject_item)
or item_id in (select item_id from subject_item);

(gibt für doppelte Werte einen Text aus… mit einem INSERT INTO … -Statement kann man die Texte in einer Protokoll-Tabelle speichern)

Ich hoffe, das war hilfreich,
mit freundlichen Grüßen,
moehre

Hi,
ist das noch aktuell, dann schreib doch mal, welche Datenbank du einsetzt? ORACLE? Dann benutze PL/SQL dam it geht das easy!