Verknüpfung von Daten aus zwei Tabellen mit zusätzlicher Addition

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Verknüpfung von Daten aus zwei Tabellen mit zusätzlicher Addition

Re: Verknüpfung von Daten aus zwei Tabellen mit zusätzlicher Addition

von RobertG » So, 02.06.2024 19:14

Hallo Hinnerk,

schicke mir die DB einfach einmal per privater Mail zu.

Gruß

Robert

Re: Verknüpfung von Daten aus zwei Tabellen mit zusätzlicher Addition

von HvThun » So, 02.06.2024 15:40

Moin Robert,

nun bin ich echt am Verzeifeln. Wenn ich die neue Abfrage mit den zehn Wagons aufrufe, bekomme ich fogende Fehlermeldung:

Die Dateninhalte konnten nicht geladen werden. at C:/cygwin64/home/buildslave/source/libo-core/connectivity/source/commontools/dbtools.cxx:744

Ausser, das ich neue Loks und Wagons hnzugefügt habe, habe ich in der Datenbank nix verändert. Die anderen Abfragen Funzen alle

Was ist da passiert und wie bekomme ich das wieder weg?

Gruß

Hinnerk

Re: Verknüpfung von Daten aus zwei Tabellen mit zusätzlicher Addition

von HvThun » Di, 21.05.2024 22:39

Moin Robert,

Danke!!!!!!!!!

Gruß

Hinnerk

Re: Verknüpfung von Daten aus zwei Tabellen mit zusätzlicher Addition

von RobertG » Di, 21.05.2024 21:08

Hallo Hinnerk,

soll ein zusätzlicher Waggon da mit dran, dann eben

Code: Alles auswählen

(SELECT "HL_Waggonliste"."Wagon" FROM "HL_Waggonliste", "viw_WaggonNr" WHERE "HL_Waggonliste"."WaggonID" = "viw_WaggonNr"."WaggonID" AND "viw_WaggonNr"."LokID" = "a"."LokID" AND "viw_WaggonNr"."ZugNr" = "a"."ZugNr" AND "Nr" = 11) AS "Waggon 11"
mit einem Komma getrennt hinter "Waggon10" anhängen.
Soll die Länge mit dazu, dann aus der anderen Abfrage

Code: Alles auswählen

(SELECT "Länge" FROM "HL_Loktabelle" WHERE "LokID" = "a"."LokID" ) + ( SELECT SUM( "Länge" ) FROM "HL_Waggonliste", "rel_Zug" WHERE "HL_Waggonliste"."WaggonID" = "rel_Zug"."WaggonID" AND "rel_Zug"."LokID" = "a"."LokID" AND "rel_Zug"."ZugNr" = "a"."ZugNr") AS "Gesamtlänge"
mit einem Komma getrennt hinten anhängen. Passt dort auch, weil eben LokID und ZugNr in der Ansicht enthalten sind.

Gruß

Robert

Re: Verknüpfung von Daten aus zwei Tabellen mit zusätzlicher Addition

von HvThun » Di, 21.05.2024 20:56

Moin Robert,

doch noch zwei Fragen, ich hoffe, die sind nur "eine SQL-Zeile" lang.

Wenn ich doch mehr als 10 Wagons brauche, muss ich nur Copy Paste in der SQL Datei "qry_Zug_max_10Waggons" machen und den Zähler eins raufsetzen.

Wenn ich nun noch ganz an den Schluss der Zug-Zeile die Zuggesamtlänge in einer Spalte haben will muss ich denke ich noch eine SQL Zeile einfügen, aber ich spreche echt nur ganz gebrochen SQL. Könntest du mir nochmal helfen?

Vielen Dank

Hinnerk

Re: Verknüpfung von Daten aus zwei Tabellen mit zusätzlicher Addition

von HvThun » Mo, 20.05.2024 23:39

Moin Robert,

echt ganz vielen vielen Dank für deine Mühe!!!!

Das hätte ich sicher nicht selbst hinbekommen!!! Ich werde jetzt mal den SQL Code versuchen zu interpretieren, werde bestimmt noch die ein oder andere Frage haben. Wie gesagt, ich will auch lernen. :-)


Es grüßt aus dem Norden

Hinnerk

Re: Verknüpfung von Daten aus zwei Tabellen mit zusätzlicher Addition

von RobertG » Mo, 20.05.2024 18:14

Hallo Hinnerk,

ich habe so eine Abfrage einmal für maximal 10 Waggons gemacht. Dazu musste ich zusätzlich 2 Ansichten erstellen, die auch noch aufeinander aufbauen. Wenn alle Züge verpflichtend eine Wagenreihenfolge hätten wäre das nicht ganz so umfangreich geworden.
Geht nur in direktem SQL.

Die Abfragen mit "v_qry_…" sind identisch mit den Ansichten "viw_…" - wie durch die weitere Bezeichnung auch erkennbar.

Gruß

Robert
Dateianhänge
EisenbahnV5.odb
(78.61 KiB) 471-mal heruntergeladen

Re: Verknüpfung von Daten aus zwei Tabellen mit zusätzlicher Addition

von HvThun » So, 19.05.2024 23:21

Moin Robert, die Calc Tabelle sollte in einer Zeile einen Zug darstellen und jedem Teil des Zuges (Lok, Wagons) eine Spalte (Zelle) widmen.

Ich packe hier mal eine Excel/Calc Tabelle zu, in der findest du unter Reiter "Zuggarnituren" das, was ich mir eigentlich vorstelle. Diese Tabelle habe ich von Hand erstellt, kann es natürlich auch so weiter machen, aber ich möchte eigentlich die Vorzüge einer Relationalen Datenbank nutzen, zumal ich, wie schon im Laufe des Threads auch unterschiedliche Zuggarnituren hinter einer Lok durchspielen können möchte.

Viele Grüße

Hinnerk
Dateianhänge
Eisenbahnliste neu.xlsx
(169.44 KiB) 435-mal heruntergeladen

Re: Verknüpfung von Daten aus zwei Tabellen mit zusätzlicher Addition

von RobertG » So, 19.05.2024 20:46

Willst Du die Waggons nebeneinander in Feldern erscheinen lassen? Oder sollen alle Waggons in einem einzigen Feld erscheinen. Wenn Du sie nebeneinander als Felder erstellst, dann wirst Du bei einem Export in Calc die Längenangabe immer in der gleichen Spalte ganz rechts stehen haben.
Da Du die interne HSQLDB benutzt: Es gibt dort leider keine Funktion, die die Waggons alle zusammen in eine Zelle fasst. Für einen passenden SQL-Code müsste ich vorher wissen, wie viele Waggons maximal an einen Zug gehängt werden sollen.

Re: Verknüpfung von Daten aus zwei Tabellen mit zusätzlicher Addition

von HvThun » So, 19.05.2024 20:17

Moin Robert,

nun kommt die Fortsetzung, sicher etwas zwänglerisch aber bestimmt lösbar, nur ich komme nicht drauf.

Ich habe in der Datenbank eine Abfrage erstellt, welche mir eine Tabelle erstellen soll, in der hinter einer Lok dann deren Wagons und die Gesamtlänge des Gebildes dargestellt werden soll.

Ich frage hierbei die dank deiner Hilfe erstellte Tabelle ab, habe dann aber "nur" die Zuordnung eines Wagens zu einer Lok, zwar so, wie wir das miteinander erarbeitet haben (Position im Zug, Zuglänge usw.).
Da ich aber gerne eine Tabelle erstellen möchte, die dann gfs. Richtung Calc exportiert werden soll,

Irgendwie komme ich nicht weiter. Hast du einen Rat?

Es grüßt Hinnerk
Dateianhänge
EisenbahnV5.odb
(77.92 KiB) 374-mal heruntergeladen

Re: Verknüpfung von Daten aus zwei Tabellen mit zusätzlicher Addition

von HvThun » Sa, 11.05.2024 10:34

Moin Robert,

ich danke dir, ich hab glaube ich jetzt das Tool, was ich wollte und fast so, wie ich es mir vorgestellt hab. Die "Kompromisse" bezüglich der Zuglänge sind absolut tolerabel.

Danke danke danke

Hinnerk

Re: Verknüpfung von Daten aus zwei Tabellen mit zusätzlicher Addition

von RobertG » Sa, 11.05.2024 08:43

Öffne einfach einmal die dem Tabellenkontrollfeld zugrundeliegende Abfrage. Versuche die Abfrage zu sortieren. Das ist die "Logik", nach der das Ganze sortiert wird.
Zuerst zeigt das Tabellenkontrollfeld natürlich die Datensätze in der Reihenfolge, in der sie abgespeichert wurden. Wenn Du dann eine Sortierung vornimmst, dann zeigt das Tabellenkontrollfeld die Sortierung nach den Integer-Zahlen, die eben in der Tabelle abgespeichert sind - nicht nach dem angezeigten Textinhalt eines Listenfeldes.
Wenn Du also nach einem anderen Kriterium sortieren willst, dann muss das Kriterium mit in die Abfrage aufgenommen werden.

Ich habe die Sortierung in der Abfrage einmal korrigiert, auch die Längenangabe nach den Zügen korrigiert und zusätzlich in die Tabelle ein Feld eingebaut, mit dem die Position des Waggons im Zug gekennzeichnet werden kann.
Dateianhänge
EisenbahnV5.odb
(73.19 KiB) 375-mal heruntergeladen

Re: Verknüpfung von Daten aus zwei Tabellen mit zusätzlicher Addition

von HvThun » Fr, 10.05.2024 23:53

Moin Robert,

nun ist echtes Finetuning angesagt. Ich habe die Datenbank ziemlich an meine Bedürfnisse weiter angepasst. Dank deiner Hilfe hab ich auch mittlerweile meist verstanden, warum ich da was mache. Danke!!

Jetzt würde ich gerne noch irgendwie die Waggons in dem Formularfeld vernünftig sortiert bekommen. Mit vernünftig meine ich, dass die Waggons zunächst in Gruppen der jeweiligen Garnitur angezeigt werden (aktuell kann es sein, dass zwischen 2 Waggons der Garnitur 1 dann doch einer der Garnitur 2 auftaucht, ich bekomme die Logik allerdings nicht raus, nach der die Datenbank sortiert).

Dann hätte ich es gerne (das ist aber schon ziemliche Nietenzählerrei), dass die Waggons einer Garnitur in der von mir ausgewählten Reihung angezeigt werden (der oberste Waggon ist der, der direkt hinter der Lok hängt usw.). Die Waggons in der HL_Wagen sind im Prinzip wenn überhaupt nach Datum des Erwerbs sortiert, auch das allerdings nicht konsequent.

Ich musste schon sehr schmunzeln bei eurer Überlegung, ob im Gleisschotter der Modellbahn auch noch weggeworfene Getränkedosen dargestellt werden müssten. Ich bin Modellbahntechnisch eher der Technikfreak, auf meiner Platte ist eine ziemliche Gleiswüste am Start und wie du vielleicht aus der Lokliste erkennen kannst, bin ich überhaupt nicht Epochentreu, bei mir fährt die T9 vom Beginn des letzen Jahrhunderts neben dem ICE, bei mir fährt, was ich schön finde, nur bei irgendeiner Bahnverwaltung auf deutschem Boden sollten die Loks dann doch gefahren sein.

Viele Grüße

Hinnerk

Achja, ich packe meine angepasste Version hier dran.
EisenbahnV5.odb
(73.69 KiB) 367-mal heruntergeladen

Re: Verknüpfung von Daten aus zwei Tabellen mit zusätzlicher Addition

von RobertG » Fr, 10.05.2024 20:24

Hallo Hinnerk,

Du musst zwangsläufig jetzt den Zug mit als Primärschlüssel setzen. Dazu musst Du zuerst die Verbindungen in Extras → Beziehungen löschen. Dann das Ganze Abspeichern und am besten noch die Datei schließen. Anschließend die Tabelle rel_Zug zum Bearbeiten öffnen und alle 3 Felder auf einmal markieren. Jetzt rechte Maustaste und → "Primärschlüssel". Alle 3 Felder zusammen müssen jetzt eindeutig sein. Jetzt kannst Du auch in einem 2. Zug mit der gleichen Lok und den gleichen Waggons arbeiten.

Von dem Modellbahnbau ist mir eigentlich nur ein Begriff stark hängen geblieben: "filigran". Das war die Detailgetreue, bei der mein Schwager und ich uns überlegt haben, ob wir im Schotter auch rote Getränkedosen einer bestimmten Marke platzieren müssten.

Gruß

Robert

Re: Verknüpfung von Daten aus zwei Tabellen mit zusätzlicher Addition

von HvThun » Fr, 10.05.2024 17:32

Moin Robert,

ich bin wirklich dankbar für deine Engelsgeduld und Hilfe!

Nachdem ich das neue Formular von dir gesehen habe, habe ich auch deine Bemerkung von vorher mit dem Feld "Zug" verstanden und auch, wo es hingehört.

Nun gibt es jedoch leider ein weiteres "Aber" :lol:

Ich weiß, Modelleisenbahner sind pingelig und es gibt bei uns auch den Schimpfnamen "Nietenzähler". Ich hatte zwar nie so das Gefühl, ein solcher zu sein, aber.......

Es gibt auf der Modellbahn (und im wirklichen Leben gab es das auch) Züge, die z.B. einen Bahnpostwagen mit sich führen, der dann sowohl im Güterzug als auch im Reisezug mitfuhr. So können dann fast unterschiedliche Züge entstehen, wo der ein oder andere Wagen dann doch in unterschiedlichen Garnituren mitfährt. :-)

Ich wollte das gleich mal mit dem neuen Formular simulieren und bekam dann folgende Fehlermeldung:

Violation of unique constraint SYS_PK_143: duplicate value(s) for column(s) "LokID","WaggonID" in statement [INSERT INTO "rel_Zug" ( "LokID","WaggonID","ZugNr") VALUES ( ?,?,?)] at C:/cygwin64/home/buildslave/source/libo-core/connectivity/source/drivers/jdbc/Object.cxx:172

Ich habe einen Wagen doppelt "erwähnt", aber in unterschiedlichen Zügen (wie oben beschrieben). Wie bekomme ich das denn nun umschifft?

Danke nochmal für deine Geduld

Hinnerk

Nach oben