Gast
#6722339
Hallo allerseits, wahrscheinlich bin ich nur zu dumm, die Dokumentation zu verstehen; ich gehe gerade die allerersten Schritte mit sqlite. Sachlage: In einem Tcl-Script verwende ich eine in-Memory-sqlite- Datenbank. Dort gibt es z.B. eine Tabelle "segments", die die Spalten "symname", "pid1" und "pid2" enthält. Diese Tabelle enthält zu jedem Liniensegment den Namen das Symbols, zu dem dieses Liniensegment gehört (symname) sowie den Index (die Nummer) des Anfangspunktes (pid1) und des Endpunktes (pid2). Das klappt soweit. Jetzt kann ich mittels
1 | |
2 | |
alle Anfangs- und Endpunkte aller Segmente abfragen, die
zum Symbol "resistor" gehören. Auch das funktioniert; die
zurückgelieferten Nummern sind vollständig und korrekt.
Die Sache hat nur den Schönheitsfehler, dass die Ergebnismenge
einfach als langer, unstrukturierter Bandwurm geliefert wird:
"0 2 1 3 3 7 7 5 5 1 6 8"
Ich hätte aber gern: "{{0 2} {1 3} {3 7} {7 5} {5 1} {6 8}}",
denn die Datenbanktabelle weiss ja, dass zu jedem Segment
(=jeder Zeile in der Tabelle) ZWEI Punkte gehören, ein
Anfangs- und ein Endpunkt, und dass insgesamt sechs Segmente
zur Ergebnismenge gehören.
Kann man diese Struktur irgendwie direkt aus dem "eval"-
Kommando von sqlite herausholen?
Ich habe bereits herausgefunden, dass man der Abfrage
ein assoziatives Array und ein Script mitgeben kann,
das bei jeder Ergebniszeile einmal ausgeführt wird, aber
ich sehe nicht, wie mir das helfen soll. Ich will die
Ergebnismenge ja nicht in einem Array haben -- das ist
ja noch umständlicher als ein langer Bandwurm!
Nachträglich mit Tcl-Mitteln umformatieren geht natürlich,
aber das finde ich nicht schön. Mich stört, dass ich die
Struktur der Daten dann praktisch zweimal hinschreiben
muss -- einmal im SELECT und einmal in der nachfolgenden
Umformatierung. Das führt zu Irrtümern.
Wahrscheinlich habe ich da nur einen Verständnisfehler.
Ich hoffe, meine Frage ist verständlich beschrieben. Ich
danke im Voraus für jeden ernsthaften Versuch der Hilfe.