MySQL 4.1.8: Ist folgendes Vorhaben per Update-Anweisung möglich?

  • SQL

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Marcus Gräfe.

    MySQL 4.1.8: Ist folgendes Vorhaben per Update-Anweisung möglich?

    Es geht um die Datenbank einer Boardsoftware (in dem Fall WBB lite 1.0.1). Folgendes möchte ich:

    Es gibt in einer Tabelle, nennen wir sie einfach "boards", die Felder "id", "isboard", "parentid" und "childlist".

    id ist die ID des Unterforums, isboard gibt an, ob es sich um ein Board (1) oder um eine Kategorie (0) handelt. parentid gibt eine boardid einer Kategorie an. Nun geht es darum, bei den Boards, welche Kategorien sind, das Feld childlist zu füllen. Es handelt sich dabei um ein String Feld, in dem die IDs durch Komma (,) getrennt aufgeführt werden.

    Nun suche ich nach einer SQL Anweisung, mit der dies möglich ist.

    Also etwa so:

    update boards set childlist = (select boardid || "," from boards where isboard = 1 and parentid = boardid) where isboard = 0;

    Nur funktioniert diese Anweisung (verständlicherweise?) überhaupt nicht.

    Hat jemand eine Idee, wie ich das realisieren könnte?
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    Hat sich erledigt, habe es nun völlig anders gelöst und es funktioniert so. Falls aber doch jemand eine SQL-Lösung findet, so möge derjenige diese posten.
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    Es handelt sich dabei um ein String Feld, in dem die IDs durch Komma (,) getrennt aufgeführt werden.

    Dann ist die Datenbank aber nicht "Normalisiert". Man speichert nicht mehrere Werte in einem Attribut, sowas ist nicht gerade elegant. Daher glaube ich auch nicht, dass sich sowas mit SQL lösen lässt. Normalerweise ist das eine 1:n Beziehnung und eine neue Tabelle namens "childlist" müsste her.
    Gruß, Agent Smith 8-)

    activeFlags = (lazy OR weary)

    Lemgo-Verschwörung | Mathematics | VB-Paradise in blau
    Hi,

    @Marcus
    Probiers mal so:

    UPDATE boards SET childlist="deine fertige kommagetrennte Liste" WHERE isboard=0;

    Was ich allerdings nicht verstanden habe, ist was du da eigentlich reinschreiben willst. ?(


    bye ...

    LaMa5.
    Die Wissenschaft wird nie ein besseres Kommunikationssystem in den Büros erfinden können als die Kaffeepause.
    (Autor: Earl Wilson, amerik. Schriftsteller)

    https://www.serviceteam-md.de

    deine fertige kommagetrennte Liste


    Genau das war ja das Problem, ich wollte diese Liste per SQL erstellen. Nun habe ich es aber wie gesagt anders gelöst, nun wird die Liste in meiner Software erstellt und so eingetragen, wie du es geschrieben hast.
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum