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
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.
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