You are not logged in.

  • Login

1

Friday, January 6th 2012, 9:26am

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!

2

Friday, January 6th 2012, 9:58am

1. steht nur max. in einer der drei spalten ein true?


PL/SQL Code

1
2
IF (ziel_a == TRUE)
    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

3

Friday, January 6th 2012, 10:25am

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.

This post has been edited 1 times, last edit by "ali g" (Jan 6th 2012, 10:38am)


4

Sunday, January 8th 2012, 9:58am

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:

SQL Code

1
2
3
UPDATE		Post
SET		ziel = IF(ziel_a, "ziel_a", IF(ziel_b, "ziel_b", IF(ziel_c, "ziel_c", "")))
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.

5

Friday, January 13th 2012, 6:41pm

Hi,
vielen Dank für deine Tipps.

Ich wollte die neuen Spalten auf Basis der vorhanden Werte bilden. Also rein per Query.
Ansonsten hat aber alles so gepasst.

Dankeee ;)

Similar threads

Social bookmarks