[GELÖST] Tabelle vereinfachen & zusammenführen

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

geimist
****
Beiträge: 191
Registriert: Fr, 15.02.2008 16:10

[GELÖST] Tabelle vereinfachen & zusammenführen

Beitrag von geimist »

Hallo zusammen,

aus einer importierten CSV-Datei möchte ich die Daten zur besseren Verwendung aufbereiten.

Code: Alles auswählen

Format der vorhandenen Daten:

ID    Datum       Aufgabe     Beschreibung
--------------------------------------------
1     1.1.12        1        Beschr. Aufg. 1
2     1.1.12        2        Beschr. Aufg. 2
3     1.1.12        3        Beschr. Aufg. 3
4     8.1.12        1        Beschr. Aufg. 1
5    15.1.12        1        Beschr. Aufg. 1
6    15.1.12        2        Beschr. Aufg. 2

Beispiel für das gewünschte Ergebnis:

Datum      Aufgabe 1            Aufgabe 2            Aufgabe 3
----------------------------------------------------------------------
 1.1.12    Beschr. Aufg. 1     Beschr. Aufg. 2    Beschr. Aufg. 3
 8.1.12    Beschr. Aufg. 1
15.1.12   Beschr. Aufg. 1     Beschr. Aufg. 2 
Ich habe dazu für jede Aufgabe eine Abfrage erzeugt. Damit habe ich das Datum (wie gewünscht) immer nur noch jeweils in einem Datensatz. Dafür habe ich aber nun 3 verschiedene Abfragen die ich in einer Tabelle (Abfrage/View) zusammenführen möchte.

Mache ich dies in einer neuen Abfrage (setze das Datum jeweils in Beziehung zueinander), so werden mir nur die Datensätze ausgegeben, in denen alle Aufgaben Felder Daten enthalten. In dem Beispiel wäre das nur der 1.1.12, aber natürlich möchte ich alle Datensätze sehen, auch wenn ein Aufgabenfeld leer ist.

Für einen hilfreichen SQL-Tipp wäre ich euch sehr dankbar
Zuletzt geändert von geimist am Di, 20.12.2011 23:23, insgesamt 1-mal geändert.
Gruß
Stephan

LibreOffice 5.3 - MAC OS/X 10.11
F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: Tabelle vereinfachen & zusammenführen

Beitrag von F3K Total »

Hallo,
ein ähnliches Thema wurde hier schon mal zur Gänze behandelt.
Viel Erfolg
Gruß R
geimist
****
Beiträge: 191
Registriert: Fr, 15.02.2008 16:10

Re: Tabelle vereinfachen & zusammenführen

Beitrag von geimist »

Danke für den Tipp, ich hatte nichts passendes gefunden.
Mangels meiner Fähigkeiten, kann ich es leider nicht auf mein Beispiel umsetzen. Dort wird ja mit 2 Quelltabellen gearbeitet. Ich kann es aber nicht auf eine (wie in meinem Fall) umsetzen.

Meinen Versuch findet man in der Anlage. Das Datum kommt halt immer mehrfach und die Spalten gibt es auch noch nicht wie gewünscht aus...
Vielleicht kann sich ja doch noch jemand meiner erbarmen :)
Dateianhänge
CSV_convert.odb
(4.09 KiB) 57-mal heruntergeladen
Gruß
Stephan

LibreOffice 5.3 - MAC OS/X 10.11
F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: Tabelle vereinfachen & zusammenführen

Beitrag von F3K Total »

falsche Datei gelöscht
Gruß R
Zuletzt geändert von F3K Total am Di, 20.12.2011 20:41, insgesamt 1-mal geändert.
geimist
****
Beiträge: 191
Registriert: Fr, 15.02.2008 16:10

Re: Tabelle vereinfachen & zusammenführen

Beitrag von geimist »

:D :D VIELEN DANK - Du bist der Retter der Ratlosen :D :D
Dürfte ich noch eine kleine Frage anhängen?
Ich würde gerne noch eine weitere Spalte mit einem Defaultwert von 00:15:00 (15 Minuten) anhängen. Geht das hier überhaupt? Ist ja eigentlich lediglich eine Abfrage und keine Eingabe...
Gruß
Stephan

LibreOffice 5.3 - MAC OS/X 10.11
F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: Tabelle vereinfachen & zusammenführen

Beitrag von F3K Total »

hier stand Quatsch
Nacht R
Zuletzt geändert von F3K Total am Di, 20.12.2011 20:40, insgesamt 1-mal geändert.
geimist
****
Beiträge: 191
Registriert: Fr, 15.02.2008 16:10

Re: Tabelle vereinfachen & zusammenführen

Beitrag von geimist »

Vielen Dank. Ich werde jetzt noch mal alles in der richtigen DB umsetzen.

GutN8
Gruß
Stephan

LibreOffice 5.3 - MAC OS/X 10.11
F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: Tabelle vereinfachen & zusammenführen

Beitrag von F3K Total »

Hallo geimist,
habe mir die Sache nochmal genauer angesehen, mein gestriger Vorschlag funktioniert nicht. Bei genauer Betrachtung habe ich festgestellt, dass die erste Beschreibung von Aufgabe 1 für alle Tage eingetragen wurde und die Zeiten unveränderbar waren.
Ich habe daher noch einige andere Änderungen durchgeführt:
1.) Der SQL-Code hat sich deutlich geändert:

Code: Alles auswählen

SELECT distinct "Datum",
case "Datum" in (Select distinct "Datum" from "Tabelle1" where "Aufgabe" = 1) When true then (select"Beschreibung" from "Tabelle1" where "Aufgabe"=1 and "Datum"="T1"."Datum") else null end  as "Aufgabe 1",
case "Datum" in (Select distinct "Datum" from "Tabelle1" where "Aufgabe" = 1) When true then (select"Zeitdauer" from "Tabelle1" where "Aufgabe"=1 and "Datum"="T1"."Datum") else null end  as "Zeit 1",
case "Datum" in (Select distinct "Datum" from "Tabelle1" where "Aufgabe" = 2) When true then (select"Beschreibung" from "Tabelle1" where "Aufgabe"=2 and "Datum"="T1"."Datum") else null end  as "Aufgabe 2",
case "Datum" in (Select distinct "Datum" from "Tabelle1" where "Aufgabe" = 2) When true then (select"Zeitdauer" from "Tabelle1" where "Aufgabe"=2 and "Datum"="T1"."Datum") else null end  as "Zeit 2",
case "Datum" in (Select distinct "Datum" from "Tabelle1" where "Aufgabe" = 3) When true then (select"Beschreibung" from "Tabelle1" where "Aufgabe"=3 and "Datum"="T1"."Datum") else null end  as "Aufgabe 3",
case "Datum" in (Select distinct "Datum" from "Tabelle1" where "Aufgabe" = 3) When true then (select"Zeitdauer" from "Tabelle1" where "Aufgabe"=3 and "Datum"="T1"."Datum") else null end  as "Zeit 3",
case "Datum" in (Select distinct "Datum" from "Tabelle1" where "Aufgabe" = 4) When true then (select"Beschreibung" from "Tabelle1" where "Aufgabe"=4 and "Datum"="T1"."Datum") else null end  as "Aufgabe 4",
case "Datum" in (Select distinct "Datum" from "Tabelle1" where "Aufgabe" = 4) When true then (select"Zeitdauer" from "Tabelle1" where "Aufgabe"=4 and "Datum"="T1"."Datum") else null end  as "Zeit 4",
case "Datum" in (Select distinct "Datum" from "Tabelle1" where "Aufgabe" = 5) When true then (select"Beschreibung" from "Tabelle1" where "Aufgabe"=5 and "Datum"="T1"."Datum") else null end  as "Aufgabe 5",
case "Datum" in (Select distinct "Datum" from "Tabelle1" where "Aufgabe" = 5) When true then (select"Zeitdauer" from "Tabelle1" where "Aufgabe"=5 and "Datum"="T1"."Datum") else null end  as "Zeit 5"
from "Tabelle1" as "T1"
2.) Eine Spalte "Zeitdauer" in Tabelle1 eingefügt.
3.) Die Spalte "ID" in Integer/Autowert geändert.
4.) Damit die Zeitspalte defaultmäßig mit 15 Min gefüllt wird, habe ich unter Extras/SQL... einmalig folgenden Befehl ausgeführt:

Code: Alles auswählen

alter table "Tabelle1" alter column "Zeitdauer" set default '00:15:00'
Dies führt dazu, das eben diese 15 Min beim Anlegen eines neuen Datensatzes defaultmäßig eingetragen werden.
5.) Ein Formular "Tabelle1" erstellt, um Punkt 4 auszuprobieren.

So, nun läufts, anbei die geänderte Datei.
Viel Erfolg damit
Gruß R
Dateianhänge
CSV_convert.odb
(13.88 KiB) 53-mal heruntergeladen
geimist
****
Beiträge: 191
Registriert: Fr, 15.02.2008 16:10

Re: Tabelle vereinfachen & zusammenführen

Beitrag von geimist »

Als ich es versucht habe, für meine Verwendung zu übernehmen, hatte ich auch schon ein paar Merkwürdigkeiten entdeckt - wollte aber noch mal genauer probieren. Vielen Dank auch für die neue Version - werde ich mir mal zu Gemüte führen.
Gruß
Stephan

LibreOffice 5.3 - MAC OS/X 10.11
geimist
****
Beiträge: 191
Registriert: Fr, 15.02.2008 16:10

Re: Tabelle vereinfachen & zusammenführen

Beitrag von geimist »

:D !!!!! PERFECT !!!!! :D

Vielen Dank. Du hast mir sehr geholfen.
Gruß
Stephan

LibreOffice 5.3 - MAC OS/X 10.11
Antworten