BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!

❤️ DANKE >><< DANKE ❤️

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Tabelle mit 8600 Datensätzen aufteilen

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
WonneWasti
! Supporter - Spende !
Beiträge: 66
Registriert: So 1. Jan 2017, 11:34

Tabelle mit 8600 Datensätzen aufteilen

Beitrag von WonneWasti » So 28. Aug 2022, 17:59

Hallo, ich habe hier eine aus einer .mdb-Datei extrahierte Calc-Tabelle mit den Platten meines Vaters und würde gern eine Datenbank mit Formularen und Berichten draus bauen. Es ist alles in einer Tabelle vereinigt: Komp_Vorn, Komp_Nachn, Geburtsort, Lebenslauf, Drirgent, etc. die kleinste Einheit ist das Stück auf dem Datenträger. Manuell müsste ich also nach den Komponisten sortieren und dann eine KompID- Spalte für die Komponisten einfügen und für jeden neuen Komponisten eine neue ID vergeben, die Tabellen dann in "Komponisten" und "Stücke" aufteilen und bei den Komponisten die Dubletten löschen.
Dann hätte ich schon einmal zwei Tabellen zum Verbinden.
Und diese Spiel noch mit den Datenträgertypen und anderen Eigenschaften wiederholen.
SQL kann diese Aufgabe sicher "unmanuell", oder kann vielleicht Calc die Nummern vergeben? Den Rest würde ich dann per Pivottabelle zu lösen versuchen.

Mein Leben hängt NICHT von der Lösung der Aufgabe ab, es ist eher sportlicher Ehrgeiz.

beste Grüße und Dank im Voraus

WonneWasti

RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Tabelle mit 8600 Datensätzen aufteilen

Beitrag von RobertG » So 28. Aug 2022, 18:49

Hallo WonneWasti,

hier nur, wie ich so etwas handhabe:
1. Alle Daten in eine Tabelle (z.B. "Import") einlesen.
2. Abfrage

Code: Alles auswählen

SELECT DISTINCT "Komponisten" FROM "Import"
laufen lassen. Das schluckt alle Duplikate.
3. Abfrage nehmen und als neue Tabelle "Komponisten" einfügen. Vielleicht vorher bereits diese Tabelle mit einer "ID" als AutoWert erstellen.
4. "Import" eine Spalte "KomponistenID" hinzufügen - Integer wie die "ID" in "Komponisten"
5. Über Extras → SQL

Code: Alles auswählen

UPDATE "Import" AS "a" 
SET "a"."KomponistenID" = (SELECT "ID" FROM "Komponisten" WHERE "Komponisten" = "a"."Komponisten")
Danach hast Du in der Tabelle "Import" den Verweis auf die Komponisten drin.

So kannst Du Stück für Stück die Ausgangstabelle "normalisieren", d.h. zu häufige Duplikate entfernen und durch ausgelagerte Tabellen ersetzen.

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

WonneWasti
! Supporter - Spende !
Beiträge: 66
Registriert: So 1. Jan 2017, 11:34

Re: Tabelle mit 8600 Datensätzen aufteilen

Beitrag von WonneWasti » Mi 31. Aug 2022, 20:43

Hallo, Robert,
das wird rein Arbeitstechnisch ein bisserl fuxen, bis ich alle Dateinamen , Feldnamen, etc. richitg eingetippt sein werden. Ich will auch "Komp_Vorn"||"Komp_Nachn" als Vergleichschlüssel verwenden. Der Extras-SQL- Dialog ist ein bisserl "hölzern".

Das wird einfach nur eine schwierige Fieselarbeit werden.

habe vielen Dank aus Wonneberg

Wasti

RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Tabelle mit 8600 Datensätzen aufteilen

Beitrag von RobertG » Do 1. Sep 2022, 07:57

Hallo Wasti,

ich nehme bei so etwas für den Code einen ganz normalen Editor des Systems. Heißt bei mir hier Kate und kann auch Hervorhebungen für verschiedene Datenbanken, so dass Fehler besser sichtbar sind.
Anschließend kopiere ich das Ergebnis in den Base-Editor und schicke es ab.

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

WonneWasti
! Supporter - Spende !
Beiträge: 66
Registriert: So 1. Jan 2017, 11:34

Re: Tabelle mit 8600 Datensätzen aufteilen

Beitrag von WonneWasti » Do 1. Sep 2022, 11:11

Grimmig ! Ich hab´s gekonnt ! Es gibt jetzt eine Tabelle für jedes Stück auf den Platten mit den Verweisen auf Komponisten, etc. sowie für die ausgelagerten Daten je eine Tabelle mit passender ID.
Was ich natürlich nicht bedacht hatte war der Umstand dass die Originaltabelle (Import) lückig ausgefüllt ist, z.B. gibt es nicht zu jedem Stück einen Interpreteneintrag, Die Folge ist natürlich dass Abfragen mit "=" Ergebnisse ohne passende Indizes ignorieren. Da werde ich mein Glück mit Right- und Left- joins versuchen. Oder geht das anders ?

Gruß und Dank aus Wonneberg
Wasti

RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Tabelle mit 8600 Datensätzen aufteilen

Beitrag von RobertG » Do 1. Sep 2022, 11:43

Hallo Wasti,

wenn Du alle Datensätze aus der Ausgangstabelle haben willst:

Code: Alles auswählen

SELECT "Ausgangstabelle".*, "Komponisten".* 
FROM "Ausgangstabelle" LEFT JOIN "Komponisten" 
ON "Ausgangstabelle"."KomponistenID" = "Komponisten"."ID" 
Ich arbeite grundsätzlich nur mit dem LEFT JOIN. Links steht dann die Tabelle, die auf jeden Fall alle Datensätze anzeigen soll und rechts die Tabelle, die hin und wieder einen Datensatz dazu gibt.

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

An alle, die das LibreOffice-Forum nutzen:


Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten