Seite 1 von 1

Re: Neue Datensätze hinzufügen Problem

Verfasst: Sa, 19.01.2013 09:22
von RobertG
Hallo dodonga,
dodonga hat geschrieben: Also ich hab eine DB und eine Tabelle erstellt und diese 3 Attribute zugewiesen (ID, Name, Ort).
Wenn ich jetzt nachträglich ein weiteres Attribut hinzufüge (Tel. nummer) dann möchte ich aus einer Liste von Excel diese Daten ebenfalls hinzufügen.
Diese sollen ab dem ersten Datensatz hinzugefügt werden. Das Problem ist jetzt dabei wenn ich die Daten aus der Excel datei kopiere und dann rechtsklick auf die Tabelle mache dann "einfüge" macht der mir nur weitere Datensätze, obwohl ich die alten Datensätze nur mit den Tel. Nummern erweitern möchte.
Woher soll die Datenbank wissen, zu welchem Datensatz die jeweilige Telefonnummer gehört? So ein Update-Befehl geht nur dann, wenn ein entsprechender Hinweis darauf erfolgt, an welcher Stelle das Update vorgenommen werden soll - bei Dir also vermutlich die ID.
Ich würde folgendermaßen verfahren:
Inhalt der Tabelle mit ID, Name, Ort in Calc hineinziehen. Dort dann aus der anderen Liste die Telefonnummern hinzufügen (mit der Liste hat das ja nur einen Sinn, wenn die genau gleich geordnet ist ...). Aus der Ursprungstabelle alles löschen und dann den Inhalt von Calc aus komplett neu einfügen - ID, Name, Ort, Telefonnummer.

Gruß

Robert

Re: Neue Datensätze hinzufügen Problem

Verfasst: Sa, 19.01.2013 09:30
von juetho
Hallo, diese Importfunktion verarbeitet in der Tat immer ganze Datenmengen, also alle Zeilen des ausgewählten Calc-Bereichs "am Stück". Um einzelne Werte nachträglich zu übernehmen, musst du so vorgehen:

Übernimm die Daten in eine neue Tabelle. Die brauchst du nur für diesen nachträglichen Import; sie kann danach gelöscht werden und ohne Weiteres auch einen Namen wie Temp erhalten.

Wenn die ID bereits in der Calc-Tabelle vorhanden ist, geht die Übernahme der Telefonnummer mit einem einfachen Befehl über Extras > SQL:

Code: Alles auswählen

update "Tabelle1"
   set "Tel" = (select "Tel" from "Temp" 
                where "Temp"."ID" = "Tabelle1"."ID")
Wenn die ID erst in der Base-Tabelle erstellt worden ist, geht es fast genauso; dann müssen aber die vorhandenen Werte verglichen werden:

Code: Alles auswählen

update "Tabelle1"
   set "Tel" = (select "Tel" from "Temp" 
                where "Temp"."Name" = "Tabelle1"."Name"
                  and "Temp"."Ort" = "Tabelle1"."Ort" )
Ich hoffe, der Befehl muss nicht weiter erklärt werden. Wenn doch, dann siehe die Einführung in SQL.

Gruß Jürgen

PS. Es sieht so aus, als wenn Robert und ich uns immer wieder absprechen, dass wir ziemlich gleichzeitig antworten (auch wenn wir unterschiedliche Lösungen anbieten). :)