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-ID: 176779

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

Ausgedruckt am: 22.11.2024 um 20:11 Uhr

Indrador
Indrador 24.11.2011, aktualisiert am 18.10.2012 um 18:49:12 Uhr
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ß
diwaffm
diwaffm 24.11.2011 um 15:53:34 Uhr
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