Spalte abhängig von anderen füllen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Spalte abhängig von anderen füllen

    Hi zusammen,

    Hoffe ihr seid alle gut ins neue Jahr gerutscht!
    Ich starte das neue Jahr gleich mal wieder mit 2 Fragen ;)

    Und zwar habe ich folgende Tabelle (vereinfacht):

    Post(
    id(int),
    text(string),
    uri (string),
    ziel_a (boolean),
    ziel_b (boolean),
    ziel_c (boolean)
    )

    1) ich würde nun gerne noch eine weitere Spalte einbauen: "ziel (string)", welche abhängig von den den boolschen Werten in ziel_a bis ziel_c befüllt wird. Im Prinzip muss überprüft werden, in welcher der drei Spalten eine 1=true steht, und abhängig davon muss der Spaltenname (z.B. "ziel_a") in die Spalte "ziel" geschrieben werden.

    2) steht in der Spalte "uri" der Pfad des Posts, welcher Metadaten enthält, die ich atomar in einer weiteren Spalte speichern möchte.
    z.B. "C:\Ordner\das_ist_so_toll_12345_1von5.txt".
    Ich brauche im Prinzip den Substring "1von5" und würde ihn gerne als "negativ" in einer Spalte "Sentiment" speichern.

    Wenn ich mich an meinen DB Kurs zurückerinner', sollte beides Möglich sein. Ich werde mich auch parallel wieder etwas einlesen, aber bei euch gehts sicherlich etwas schneller und sauberer.

    Vieeelen Dank!
  • 1. steht nur max. in einer der drei spalten ein true?


    Quellcode

    1. if (ziel_a == true)
    2. set ziel = "ziel_a" else if (ziel_b ==true) set ziel = "ziel_b" else if (ziel_c == true) set ziel = "ziel_c"



    2. Dazu müsst ich jetzt selber nachschauen und mal basteln, hab aber grad wenig Zeit.
    Mach ich später, wenn es bis dahin noch ungelöst bleibt :)

    Gruß
    nobody
    "Irren ist menschlich. Aber wer richtigen Mist bauen will, braucht einen Computer."
  • jap, genau.
    Eine Spalte hat ist true und der Rest false.

    Danke, ich schau mir mal den Ansatz an!

    Die 2. Frage kann vergessen werden. Ich habs jetzt einfach mit 2 queries gelöst!

    Danke


    //Edit:
    bevor das jetzt zu komplex wird, kann ich natürlich auch hier 3 statements nutzen.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von ali g ()

  • Hallo

    Zu 1) Ich kenne ja den Anwendungsfall nicht.
    Willst du es unmittelbar, dann solltest du es Anwendungsseitig machen oder mit einem TRIGGER.
    Willst du es per cron machen:

    Quellcode

    1. UPDATE Post
    2. SET ziel = IF(ziel_a, "ziel_a", IF(ziel_b, "ziel_b", IF(ziel_c, "ziel_c", "")))
    3. WHERE ziel_a OR ziel_b OR ziel_c;


    Zu 2) hast du die Lösung mit der Nutzung von Substring doch selbst erläutert? Wo stellen sich dir hier noch Probleme?
    mit REVERSE und LOCATE kommst du an die Position des letzten Unterstrich. Von dort kannst du abschneiden.
    Alternativ könntest du vielleicht auch REGEXP benutzen.