Seite 1 von 1

Abfrage-Schleife

Verfasst: Mi 8. Nov 2017, 15:43
von schnoesel
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

Re: Abfrage-Schleife

Verfasst: Mi 8. Nov 2017, 16:35
von nikki

Re: Abfrage-Schleife

Verfasst: Mi 8. Nov 2017, 18:23
von RobertG
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

Re: Abfrage-Schleife

Verfasst: Do 9. Nov 2017, 09:03
von schnoesel
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.

Re: Abfrage-Schleife

Verfasst: Do 9. Nov 2017, 17:31
von RobertG
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