Stehe auf dem Schlauch: sinnvoll (gemischt-numerisch) sortieren

Stehe auf dem Schlauch: sinnvoll (gemischt-numerisch) sortieren

am 11.11.2006 20:14:11 von newsgroup

Hallo,

ich habe hier ein Diskussionsforum, das jedem Diskussionsbeitrag eine
Position in einem Antwortbaum zuordnet, und zwar nach der Art

Pfad = "244,4,2,1"
(erste Antwort auf zweite Antwort auf vierte Antwort in Thread 244).

Jetzt möchte ich diese Struktur darstellen und muss sie zu diesem Zweck
linearisieren. Richtig wäre beispielsweise Folgendes:

1
1,1
1,1,1
1,2
1,2,1
1,3
....
1,10
1,10,1

Wenn ich mySQL diese Daten alphabetisch sortieren lasse (ORDER BY Pfad ASC),
werden sie natürlich in die folgende Reihenfolge gebracht:

1
1,1
1,1,1
1,10
1,10,1
1,2
1,2,1
....

Natürlich könnte ich dieses Problem lösen, indem ich die Zahlen mit
führenden Nullen versehe, aber das ist sicherlich nicht die feine Art (und
führt ein zusätzliches Limit ein, nämlich über die Anzahl der Stellen pro
Zahl). Hat jemand eine Idee, wie man diese Daten sortieren und die
Baumstruktur dabei bewahren könnte? Ich stehe gerade echt auf dem Schlauch.

Gruß,
Matthias

Re: Stehe auf dem Schlauch: sinnvoll (gemischt-numerisch) sortieren

am 11.11.2006 20:18:24 von Johannes Vogel

Hi Matthias

Matthias Hu. wrote:
> ich habe hier ein Diskussionsforum, das jedem Diskussionsbeitrag eine
> Position in einem Antwortbaum zuordnet, und zwar nach der Art
> Pfad = "244,4,2,1"
> (erste Antwort auf zweite Antwort auf vierte Antwort in Thread 244).

Du möchtest dich mit Bäumen in SQL auseinander setzen. Beste Lösung:
Nested Sets.
z.B.: http://www.klempert.de/nested_sets/

HTH, Johannes

Re: Stehe auf dem Schlauch: sinnvoll (gemischt-numerisch) sortieren

am 11.11.2006 20:49:20 von newsgroup

Hallo Johannes,

danke für deine Antwort.

> Du möchtest dich mit
Nein, möchte ich nicht. Ich brauche eine Lösung für mein bereits
existierendes und invariantes Problem.

Schönen Gruß,
Matthias


"Johannes Vogel" ha scritto nel messaggio
news:7152e$4556226d$544a5456$16477@news.hispeed.ch...
> Hi Matthias
>
> Matthias Hu. wrote:
>> ich habe hier ein Diskussionsforum, das jedem Diskussionsbeitrag eine
>> Position in einem Antwortbaum zuordnet, und zwar nach der Art
>> Pfad = "244,4,2,1"
>> (erste Antwort auf zweite Antwort auf vierte Antwort in Thread 244).
>
> Du möchtest dich mit Bäumen in SQL auseinander setzen. Beste Lösung:
> Nested Sets.
> z.B.: http://www.klempert.de/nested_sets/
>
> HTH, Johannes

Re: Stehe auf dem Schlauch: sinnvoll (gemischt-numerisch) sortieren

am 11.11.2006 20:52:19 von Claus Reibenstein

Matthias Hu. schrieb:

> Hallo Johannes,
>
> danke für deine Antwort.
>
>> Du möchtest dich mit
>
> Nein, möchte ich nicht.

Doch, möchtest Du.

> Ich brauche eine Lösung für mein bereits
> existierendes und invariantes Problem.

Dein "invariantes Problem" besteht darin, dass es im Ansatz schon Murks
ist. Überdenke Deinen Ansatz, baue Deine Datenbank entsprechend um, und
das Problem löst sich von ganz alleine.

> "Johannes Vogel" ha scritto nel messaggio
> news:7152e$4556226d$544a5456$16477@news.hispeed.ch...
>
>> [Fullquote gesnipt]

Du möchtest (doch, auch das möchtest Du!) http://learn.to/quote lesen.

Gruß. Claus
--
,~°O O
O ,´ / |/|\
/ |¯`. Das neue Hochzeits-Branchenbuch im Internet ,´ / | |\
/__| `~...............................................~´ /___|/ /

Re: Stehe auf dem Schlauch: sinnvoll (gemischt-numerisch) sortieren

am 11.11.2006 21:39:20 von newsgroup

Hallo Claus,

auch dir vielen Dank für deine Belehrungen. Immer wieder schön zu lesen, was
ich eigentlich möchte.

> Dein "invariantes Problem"

Bei meinem "invarianten Problem" handelt sich nicht um meinen Ansatz, und
die Zeit, die ich darauf verwenden müsste, den Urheber des Ansatzes von der
Murkshaftigkeit seines Ansatzes zu überzeugen, könnte ich gewiss sinnvoller
investieren, indem ich das Problem einfach löse.

Übrigens ist der Murks so groß, dass die Datensätze nicht einmal einen
zusammenhängenden Baum ergeben müssen. Den Ansatz der Nested Sets
entsprechend anzupassen, gäbe mit Sicherheit Murks ähnlichen Ausmaßes.

Ich frage also nochmals unter bewusster Unterschlagung des
Anwendungsbeispiels:

Wie kann ich in einer mySQL-Datenbank liegende String-Werte, die, durch
Kommata getrennt, die String-Repräsentation von n>1 positiven ganzen Zahlen
z1, ..., zn enthalten, möglichst effizient sortieren, wobei die Sortierung
nach den Werten der einzelnen Zahlen erfolgen soll mit fallender Priorität
von links nach rechts?

> Du möchtest (doch, auch das möchtest Du!) http://learn.to/quote lesen.

Kenne ich (widerliche Optik der Startseite, war das schon immer so?), da
steht aber nicht drin, wie man versehentlich dringelassene Fullquotes aus
bereits abgeschickten Postings entfernt.

Schönen Gruß,
Matthias

Re: Stehe auf dem Schlauch: sinnvoll (gemischt-numerisch) sortieren

am 11.11.2006 22:00:00 von Johannes Vogel

Hi Matthias

Matthias Hu. wrote:
> Wie kann ich in einer mySQL-Datenbank liegende String-Werte, die, durch
> Kommata getrennt, die String-Repräsentation von n>1 positiven ganzen Zahlen
> z1, ..., zn enthalten, möglichst effizient sortieren, wobei die Sortierung
> nach den Werten der einzelnen Zahlen erfolgen soll mit fallender Priorität
> von links nach rechts?

Ich denke nicht, dass es dafür eine effiziente Lösung in MySQL gibt.
MySQL erwartet Informationen in Normalform, was du leider nicht anbieten
willst.

Der einzige Weg zum Ziel führt darüber, die 'verschlüsselte' Information
in ein Schema umzuwandeln, welches MySQL verstehen und MySQL damit
deinen Auftrag erledigen kann.

Du könntest dies bei jeder Abfrage on-the-fly erledigen lassen. Das wäre
effektiv und würde auch dein Unwille zu wollen, was wir dir sagen,
befriedigen. Effizient wäre es aber mit Sicherheit nicht.

Stattdessen könntest du - und das ist mein Vorschlag - aber auch ein
Script schreiben, welches dir einmal die Datensätze so anpasst, dass du
eine Nested Set Struktur hast. Und natürlich müsstest du die
Applikationen entsprechend anpassen...

Was du unter "nicht einmal einen zusammenhängenden Baum ergeben" meinst,
verstehe ich übrigens nicht. Gibt es Antworten auf nichts?

HTH, Johannes

Re: Stehe auf dem Schlauch: sinnvoll (gemischt-numerisch) sortieren

am 11.11.2006 22:19:52 von newsgroup

Hallo Johannes,

danke für deine doch noch hilfreiche Antwort.

"Johannes Vogel" ha scritto...

> Ich denke nicht, dass es dafür eine effiziente Lösung in MySQL gibt.
> MySQL erwartet Informationen in Normalform, was du leider nicht anbieten
> willst.

Schade.

> Was du unter "nicht einmal einen zusammenhängenden Baum ergeben" meinst,
> verstehe ich übrigens nicht. Gibt es Antworten auf nichts?

Ja. Gibt es. Und nein, mir gefällt das auch nicht.

Schönen Gruß,
Matthias

Re: Stehe auf dem Schlauch: sinnvoll (gemischt-numerisch) sortieren

am 11.11.2006 22:27:23 von Johannes Vogel

Hi Matthias

Matthias Hu. wrote:
> danke für deine doch noch hilfreiche Antwort.

Das finde ich doch sehr zynisch, in Anbetracht dessen, dass dir hier
sehr wohl geholfen wurde. Dass du die echte Hilfe nicht annehmen willst,
ist bedauerlich.

> "Johannes Vogel" ha scritto...
>> Ich denke nicht, dass es dafür eine effiziente Lösung in MySQL gibt.
>> MySQL erwartet Informationen in Normalform, was du leider nicht anbieten
>> willst.
^^^^^^
> Schade.

Stimmt.

>> Was du unter "nicht einmal einen zusammenhängenden Baum ergeben" meinst,
>> verstehe ich übrigens nicht. Gibt es Antworten auf nichts?
> Ja. Gibt es. Und nein, mir gefällt das auch nicht.

Sowas kann auch in den Newsgroups passieren: Ein Posting wird
beantwortet und später vom Autor zurückgezogen. Das ist nicht unschön,
sondern es muss halt einfach das Verhalten in diesem Fall definiert
werden. Eine Antwort auf "nichts" könnte u.U. einfach dem höher
liegenden vorhandenen Beitrag zugeordnet werden.

Johannes

Re: Stehe auf dem Schlauch: sinnvoll (gemischt-numerisch) sortieren

am 12.11.2006 02:02:09 von Sebastian Suchanek

Thus spoke Matthias Hu.:
> Hallo Johannes,
>
> [...]
>> Was du unter "nicht einmal einen zusammenhängenden Baum
>> ergeben" meinst, verstehe ich übrigens nicht. Gibt es
>> Antworten auf nichts?
>
> Ja. Gibt es. Und nein, mir gefällt das auch nicht.

Wir halten fest: die bestehende Lösung ist Murks und Du weißt,
daß es Murks ist. Murks wird aber üblicherweise nicht besser,
wenn man daran herumbastelt - eher im Gegenteil - statt eine
saubere Lösung anzustreben.
Will sagen: Selbst wenn Du /dieses/ Problem gelöst kriegst,
stehen die Chancen nicht schlecht, daß Du demnächst vor die
nächste Wand läufst.


Tschüs,

Sebastian

--
http://www.baumaschinen-modelle.net
http://www.schwerlast-rhein-main.de

Re: Stehe auf dem Schlauch: sinnvoll (gemischt-numerisch) sortieren

am 12.11.2006 12:02:39 von Claus Reibenstein

Matthias Hu. schrieb:

> Bei meinem "invarianten Problem" handelt sich nicht um meinen Ansatz, und
> die Zeit, die ich darauf verwenden müsste, den Urheber des Ansatzes von der
> Murkshaftigkeit seines Ansatzes zu überzeugen, könnte ich gewiss sinnvoller
> investieren, indem ich das Problem einfach löse.

Ich fürchte, Deine "Lösung" wird unter diesen Umständen mindestens genau
so aufwendig.

> Übrigens ist der Murks so groß, dass die Datensätze nicht einmal einen
> zusammenhängenden Baum ergeben müssen. Den Ansatz der Nested Sets
> entsprechend anzupassen, gäbe mit Sicherheit Murks ähnlichen Ausmaßes.

Unter diesen Umständen würde ich den Auftrag ablehnen. Wenn der Kunde
nach dem Warum fragt, kannst Du ihn ja auf diesen Thread verweisen.

Ich halte es grundsätzlich für den falschen Ansatz, fremden Murks durch
eigenen Murks verschlimmbessern zu wollen.

Gruß. Claus
--
,~°O O
O ,´ / |/|\
/ |¯`. Das neue Hochzeits-Branchenbuch im Internet ,´ / | |\
/__| `~...............................................~´ /___|/ /