Hallo, ich habe da ein Problem das ich alleine nicht in den Griff bekomme.
Ich habe insgesammt drei Tabellen und muss in einer einen Wert setzten, dafür muss ich über alle anderen Tabellen gehen.
1.Tabelle: daten1: Spalten zur Zuordung: quelle, ziel, begin(datetime)
2.Tabelle daten2: user_id(ist identisch mit einem wert aus quelle oder ziel), kundenid(zu einer kundenid gehören 10 user_id's)
3.Tabelle daten3: kundenid(identisch mit(daten2.kundenid),letztenutzung
ich möchte in daten3.letztenutzung einen von drei Werten haben. die Möglichkeiten der Werte sind:
- 0 bei daten1.begin(datetimewert) < 30 Tage unterschied von heute
- 1 bei daten1.begin(datetimewert) >30 Tage <=90 Tage unterschied von heute
- 2 bei daten1.begin(datetimewert) >90 Tage unterschied von heute
ich habe eine Abfrage mit if hinbekommen, die sieht so aus:
UPDATE daten3
SET letztenutzung=(IF
(DATE_ADD(
(SELECT MAX(daten1.begin)
FROM daten1
LEFT JOIN daten2
ON daten1.ziel=daten2.user_id
OR daten1.quelle=daten2.user_id
WHERE daten2.kundenid=1001),
INTERVAL 90 DAY)
< NOW(), '1','2')
);
damit bekomme ich das für eine bestimmte ID hin. Aber wie mache ich mit so einer(für mich komplizierten) Abfrage mit einem CASE?
Ich bin für jede Hilfe dankbar. Super wäre wenn ihr mir nicht nur die Abfrage gebt, sondern auch eine Erklärung dazu.
Danke
Ich habe insgesammt drei Tabellen und muss in einer einen Wert setzten, dafür muss ich über alle anderen Tabellen gehen.
1.Tabelle: daten1: Spalten zur Zuordung: quelle, ziel, begin(datetime)
2.Tabelle daten2: user_id(ist identisch mit einem wert aus quelle oder ziel), kundenid(zu einer kundenid gehören 10 user_id's)
3.Tabelle daten3: kundenid(identisch mit(daten2.kundenid),letztenutzung
ich möchte in daten3.letztenutzung einen von drei Werten haben. die Möglichkeiten der Werte sind:
- 0 bei daten1.begin(datetimewert) < 30 Tage unterschied von heute
- 1 bei daten1.begin(datetimewert) >30 Tage <=90 Tage unterschied von heute
- 2 bei daten1.begin(datetimewert) >90 Tage unterschied von heute
ich habe eine Abfrage mit if hinbekommen, die sieht so aus:
UPDATE daten3
SET letztenutzung=(IF
(DATE_ADD(
(SELECT MAX(daten1.begin)
FROM daten1
LEFT JOIN daten2
ON daten1.ziel=daten2.user_id
OR daten1.quelle=daten2.user_id
WHERE daten2.kundenid=1001),
INTERVAL 90 DAY)
< NOW(), '1','2')
);
damit bekomme ich das für eine bestimmte ID hin. Aber wie mache ich mit so einer(für mich komplizierten) Abfrage mit einem CASE?
Ich bin für jede Hilfe dankbar. Super wäre wenn ihr mir nicht nur die Abfrage gebt, sondern auch eine Erklärung dazu.
Danke
Comment