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. 🤗

Abfrage-Schleife

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
schnoesel
Beiträge: 2
Registriert: Mi 8. Nov 2017, 15:18

Abfrage-Schleife

Beitrag von schnoesel » Mi 8. Nov 2017, 15:43

Hallöchen, da dieses Forum mir bisher immer sehr gut passiv (SuFu) helfen konnte, muss ich nun aktive Hilfe bei euch suchen.

Es geht um eine Art Abfrage-Schleife für eine Tabelle die ähnlich der folgenden aussieht:

Code: Alles auswählen

Owner; Member; Status
ABC;   123;    x
ABC;   456;    x
ABC;   789;    o
123;   hij;    x
DEF;   456;    x
DEF;   2f2;    o
123;   klm;    o
DEF;   789;    o
hij;   1s1;    x
hij;   2f2;    o
...
Das ganze ist eine Art Stückliste. Teil ABC besteht aus den Teilen 123, 456, 789. Teil 123 besteht aus hij, klm. Teil DEF besteht aus 456 und 2f2. Teil hij besteht aus 1s1 und 2f2. Der Status ist der der Member (Memberstatus). Es gibt noch Positionsnummern der Member relativ zu den Owner, aber die sind nicht laufend (nur zur Information).

Nun hätte ich gerne eine Abfrage, die mir die alle relevanten Teile und Unterteile listet, die mit dem abgefragten Owner zusammenhängt. Beispiel: Alle von ABC verwendeten Teile sind (7 Ergebniszeilen):

Code: Alles auswählen

ABC
- 123
-- hij
--- 1s1
--- 2f2
-- klm
- 456
- 789
Obige Darstellung mit Hierarchie - diese wird aber nicht wirklich benötigt. Wie kann ich das ganze am besten realisieren? Meine Vermutung: Eine Schleife. Ich tippe da aber ansonsten erstmal im dunkeln.

Nun möchte ich aber auch nur die Teile angezeigt bekommen, die sonst nicht in anderen Teilen benutzt werden. Da 456 und 2f2 auch in DEF verwendet werden, dürfen diese Teile nicht aufgelistet werden (5 Ergebniszeilen):

Code: Alles auswählen

ABC
- 123
-- hij
--- 1s1

-- klm

- 789
Ich müsste mir also erst alle Teile von ABC (Owner) listen, dann von den Teilen (Member) jeweils die Teile listen und für jede Ebene (es sind eigentlich mehr als die oben dargestellten) eine Prüfung durchführen, ob diese Teile noch in anderen Teilen wie ABC genutzt werden.

Ich hoffe, dass ich mich verständlich ausgedrückt habe und wünsche euch allen einen schönen (Feier)Abend!

Toni

nikki
Beiträge: 1026
Registriert: Sa 18. Mär 2017, 22:25
Kontaktdaten:

Re: Abfrage-Schleife

Beitrag von nikki » Mi 8. Nov 2017, 16:35

Gruß

---------------------------------------------------
Win.10 Prof. 64-bit, LO 6.3.4 (x64), LO 6.2.6 Portable, AOO 4.1.7

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

Re: Abfrage-Schleife

Beitrag von RobertG » Mi 8. Nov 2017, 18:23

Hallo Toni,

mit GROUP BY wird das nicht funktionieren.

Du hast da eine Tabelle, die so sicher nicht direkt in einer Datenbank vorkommt. Export von irgendwoher?

Code: Alles auswählen

SELECT "a"."Owner", "a"."Member", (SELECT "Member" FROM "Tabelle" WHERE "Owner" = "a"."Member" AND "Status" = 'x') AS "1" FROM "Tabelle" AS "a" 
So käme z.B. das Ergebnis ABC - 123 - hij zustande. Sobald aber für die Unterabfrage mehr als eine Position belegt ist streikt sie.

In einer ordentlichen Datenbank sind die Gliederungen für so etwas von einer Tabelle zur anderen hierarchisch aufgebaut. Die vorliegende Tabelle könntest Du zumindest mit der internen HSQLDB so nicht sinnvoll auf diese Art komplett auslesen. Da hilft dann nur die Schleifentechnik eines Makros, über das dann eine neue Tabelle geschrieben wird.

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

schnoesel
Beiträge: 2
Registriert: Mi 8. Nov 2017, 15:18

Re: Abfrage-Schleife

Beitrag von schnoesel » Do 9. Nov 2017, 09:03

RobertG hat geschrieben:
Mi 8. Nov 2017, 18:23
Du hast da eine Tabelle, die so sicher nicht direkt in einer Datenbank vorkommt. Export von irgendwoher?

In einer ordentlichen Datenbank sind die Gliederungen für so etwas von einer Tabelle zur anderen hierarchisch aufgebaut. Die vorliegende Tabelle könntest Du zumindest mit der internen HSQLDB so nicht sinnvoll auf diese Art komplett auslesen. Da hilft dann nur die Schleifentechnik eines Makros, über das dann eine neue Tabelle geschrieben wird.
Es tut mir leid dich da so enttäuschen zu müssen, aber ja, so sieht die Tabelle aus (zumindest bei ODBCTableView). Die Idee mit dem Makro ist eine sehr gute! Ich könnte dann eine Abfrage machen - also "Hauptteil" suchen lassen und mir alle Unterteile in eine Extratabelle (oder Array oder was auch immer) ausgeben lasse. Dann schaue ich, ob die Teile woanders eingebaut sind, und falls ja, lösche ich diese daraus. Falls nicht, lasse ich mir auch diese Auflisten. Das ganze, bis es keine Unterteile gibt. Eieiei... das wird kompliziert. Ein Glück habe ich so richtig veil Ahnung von Makros in LibreOffice [/sarkasmus] Danke vorerst für den Tipp!


Nikki, dein Link ist wenig hilfreich - vor allem ohne Information dazu. Vielleicht bin ich auch einfach zu blöd und es ist außerhalb meiner Kompetenz, aber ich glaube, diese Funktionen decken nicht das ab, was ich haben möchte.

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

Re: Abfrage-Schleife

Beitrag von RobertG » Do 9. Nov 2017, 17:31

Hallo Toni,

ich habe das einmal mit Hilfe der genannten Daten nur mittels Abfragen versucht umzusetzen. Auf eine ähnliche Art und Weise könnte das auch mittels Makro funktionieren. Dann könnte auch gewährleistet werden, dass wirklich alle Daten mit drin sind. Die letzte Schleife (in Abfrage 4) ist dann gegeben, wenn nur noch "Owner" da sind, die nirgendwo als "Member" vertreten sind.

Wenn Du ein bisschen mehr Daten lieferst, dann könnte ich das auch einmal mittels Makro ausprobieren.

Gruß

Robert
Dateianhänge
Hierarchien.zip
(4.2 KiB) 112-mal heruntergeladen
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