Seite 1 von 1

Calc Tabelle in mehrere Base Tabellen automatisch aufteilen

Verfasst: Sa, 21.03.2015 10:47
von Thomasessen82
Hallo liebes Forum:)

Ich bin neu hier und beschäftige mich gerade mit BASE.

Habe eine Frage wo ich nach googlen usw keine Antwort gefunden habe.

Ich habe eine große Masterdatei in Calc und möchte diese als Grundlage für eine Datenbank in Base nutzen.

Im Zuge der Normalisierung werde ich Plz´s und Ort usw. in seperate Tabellen nehmen.

Diese Daten sind alle schon in der Masterdatei enhalten.

Nun Frage ich mich ob man die Masterdatei so aufteilen kann das ich bei einem Adressensatz direkt nur die Namen in eine Tabelle importiere und PLZ Ort in eine seperate Tabelle importiere usw.. Wenn es importiert ist sollte dann direkt eine "verknüpfung" der Tabellen vorhanden sein.

Also das beim Namen Peter Müller direkt die PLZID 24 steht.

Ist sowas möglich ??

Gruß

Thomas

Re: Calc Tabelle in mehrere Base Tabellen automatisch aufteilen

Verfasst: Sa, 21.03.2015 12:02
von RobertG
Hallo Thomas,

ich würde den folgenden Weg gehen:
1. Komplette Tabelle der Masterdatei in Base importieren.
2. Die Felder PLZ und Ort daraus mit einer Abfrage auslesen und als separate PLZOrt-Tabelle abspeichern (dabei Autowert zum Erstellen der ID einstellen).

Code: Alles auswählen

SELECT DISTINCT "PLZ", "Ort" FROM "Importtabelle"
3. Der Importtabelle ein Feld "PLZID" hinzufügen.
4. Unter Extras → SQL ein Update für diese Tabelle ausführen:

Code: Alles auswählen

UPDATE "Importtabelle" AS "a" SET "a"."PLZID" = (SELECT "ID" FROM "PLZOrt" WHERE "PLZ"||"Ort" = "a"."PLZ"||"a"."Ort")
5. Die Importtabelle zum Bearbeiten öffnen und die Felder "PLZ" und "Ort" löschen, die Änderung speichern und anschließend die Tabelle wieder schließen.

Gruß

Robert

Re: Calc Tabelle in mehrere Base Tabellen automatisch aufteilen

Verfasst: Mo, 23.03.2015 06:38
von Thomasessen82
Danke :)

Code: Alles auswählen

UPDATE "Importtabelle" AS "a" SET "a"."PLZID" = (SELECT "ID" FROM "PLZOrt" WHERE "PLZ"||"Ort" = "a"."PLZ"||"a"."Ort")
hat nicht funktioniert.

aber

Code: Alles auswählen

UPDATE "Importtabelle" AS "a" SET "a"."PLZID" = (SELECT MAX ("ID") FROM "PLZOrt" WHERE "PLZ"||"Ort" = "a"."PLZ"||"a"."Ort")
dann ja :)

Vielen Dank

Re: Calc Tabelle in mehrere Base Tabellen automatisch aufteilen

Verfasst: Mo, 23.03.2015 16:32
von RobertG
Hallo Thomas,

wenn nur

Code: Alles auswählen

UPDATE "Importtabelle" AS "a" SET "a"."PLZID" = (SELECT MAX ("ID") FROM "PLZOrt" WHERE "PLZ"||"Ort" = "a"."PLZ"||"a"."Ort")
funktioniert, dann ist an der Tabelle "PLZOrt" etwas faul. Da müssen dann Duplikate drin sein. Das dürfte allerdings nicht vorkommen, wenn Du mit

Code: Alles auswählen

SELECT DISTINCT "PLZ", "Ort" FROM "Importtabelle"
die Tabelle erstellt hast dürfte so etwas nicht passieren, denn der Zusatz DISTINCT schließt aus, dass es von der Kombination "PLZ" und "Ort" Duplikate gibt.

Ich würde dringedst noch einmal die Tabelle "PLZOrt" auf Duplikate untersuchen.

Code: Alles auswählen

SELECT COUNT("PLZ"||"Ort"), "PLZ"||"Ort" FROM "PLZOrt" GROUP BY "PLZ"||"Ort"
dürfte nirgendwo größer als 1 sein.

Gruß

Robert

Re: Calc Tabelle in mehrere Base Tabellen automatisch aufteilen

Verfasst: Mo, 23.03.2015 18:45
von Thomasessen82
Hallo,

Ja hattest vollkommen recht es gab doppelte Einträge.
Hab ich nicht drauf geachtet.

Wenn ich die Abfrage mit SQL mache kann ich das Ergebniss aber nicht in eine CALC Tabelle kopieren um es dann wieder zu Importieren. Oder hab ich jetzt einen Denkfehler. Hab bisher immer mit Access gearbeitet aber Arbeitgeber bedingt beschäftige ich mich jetzt mit Base.

Gruß

Thomas

---------------------------

Für blöde gehts ganz einfach :)

Vielen Dank

Re: Calc Tabelle in mehrere Base Tabellen automatisch aufteilen

Verfasst: Mo, 23.03.2015 20:57
von RobertG
Hallo Thomas,

ich nehme an, dass wir uns da missverstanden haben. Wenn ich von Tabellen schreibe, dann ist das für mich zuerst einmal eine Tabelle in Base.
Bei diesem Schritt
2. Die Felder PLZ und Ort daraus mit einer Abfrage auslesen und als separate PLZOrt-Tabelle abspeichern (dabei Autowert zum Erstellen der ID einstellen).mit dieser Abfragedurch die Abfrage

Code: Alles auswählen

SELECT DISTINCT "PLZ", "Ort" FROM "Importtabelle"
eine Tabelle erstellt, indem Du die Abfrage speicherst, mit der rechten Maustaste über die Abfrage, kopieren. Dann in den Tabellencontainer gehen und rechte Maustaste - Einfügen. Dabei dann den Primärschlüssel erstellen lassen.
Die Abfrage schließt durch DISTINCT doppelte Werte aus.

Gruß

Robert

Re: Calc Tabelle in mehrere Base Tabellen automatisch aufteilen

Verfasst: Di, 24.03.2015 06:10
von Thomasessen82
Hallo Robert,

Vielen Dank.

Hatte diese "Fehler" meinerseits erkannt und behoben :)

Jetzt Funktioniert Alles SUPER!!

Vielen Dank