diwaffm
Goto Top

Inserts in MS-SQL Datenbank für Relationen, die nicht erfüllt sind

In Datensätze in einer SQL-Tabelle finden, die KEINE Relation zu einer anderen Tabelle aufweisen habe ich nach der Suche nach Datensätzen gefragt, die in einer verknüpften Datenbank NICHT vorkommen:

Ich habe 2 verknüpfte Tabellen (in Tabelle a wird mittels des Feldes ID_b auf Tabelle b verwiesen).
Es sollen alle Einträge in Tabelle b selektieren werden, auf die nicht von Tabelle a aus verwiesen wird...

Gelöst wurde das dann durch

select * from TabelleB where ID not in (select ID_b from TabelleA)

Nun stehe ich vor dem Problem, dass ich in Tabelle a Einträge für diese in Tabelle B existierenden Datensätze erstellen will.


Also etwas in der Art:

Insert into TabelleB (id) values (TabelleA.id_b) where ID not in (select ID_b from TabelleA)

Doch hier bekomme ich als Fehlermeldung immer nur "Fehlendes Semikolon am Ende der SQL-Anweisung" - und "where" ist markiert...

Ciao

dirk

Content-Key: 176779

Url: https://administrator.de/contentid/176779

Printed on: July 22, 2024 at 12:07 o'clock

Member: Indrador
Indrador Nov 24, 2011, updated at Oct 18, 2012 at 16:49:12 (UTC)
Goto Top
Zitat von @diwaffm:
In Datensätze in einer SQL-Tabelle finden, die KEINE Relation zu einer anderen Tabelle aufweisen habe ich nach der Suche nach Datensätzen gefragt, die in einer
verknüpften Datenbank NICHT vorkommen:

Ich habe 2 verknüpfte Tabellen (in Tabelle a wird mittels des Feldes ID_b auf Tabelle b verwiesen).
Es sollen alle Einträge in Tabelle b selektieren werden, auf die nicht von Tabelle a aus verwiesen wird...

Gelöst wurde das dann durch

select * from TabelleB where ID not in (select ID_b from TabelleA)

Nun stehe ich vor dem Problem, dass ich in Tabelle a Einträge für diese in Tabelle B existierenden Datensätze
erstellen will.


Also etwas in der Art:

Insert into TabelleB (id) values (TabelleA.id_b) where ID not in (select ID_b from TabelleA)

Doch hier bekomme ich als Fehlermeldung immer nur "Fehlendes Semikolon am Ende der SQL-Anweisung" - und
"where" ist markiert...

Ciao

dirk


Insert into TabelleA (ID_B)
select id from TabelleB where ID not in (select ID_b from TabelleA);

Das funktioniert aber nur, wenn in Tabelle A alle anderen Felder NULL sein dürfen bzw. Autoincrement sind z.B. PK
Da in Thema 1 kein Wort von deiner Datenstruktur steht, setzte ich ein bisschen
Kenntnis beim Auffüllen von Pflichtfeldern voraus.

Gruß
Member: diwaffm
diwaffm Nov 24, 2011 at 14:53:34 (UTC)
Goto Top
Insert into TabelleA (ID_B)
select id from TabelleB where ID not in (select ID_b from TabelleA);

Das funktioniert aber nur, wenn in Tabelle A alle anderen Felder NULL sein dürfen bzw. Autoincrement sind z.B. PK
Da in Thema 1 kein Wort von deiner Datenstruktur steht, setzte ich ein bisschen
Kenntnis beim Auffüllen von Pflichtfeldern voraus.

Merci, das funktioniert.
ID ist das einzige Feld, das nicht NULL sein darf - von daher klappt das.

Ciao

dirk