Entscheidung in einem UPDATE-Befehl

Buba235

Erfahrenes Mitglied
Hallo Leute!

Ich hab da echt ein Problem, das ziemlich verwirrend ist. Vielleicht
könnt ihr mir da helfen. Also ich versuch euch das mal zu erklären.
Ich programmiere C unter Linux mit MySQL. So und nun zu der Erklärung.
Also ich habe in meinem Programm 4 Tabellen, in denen Infos stehen, die
ich benötige. Die Tabellen sehen so aus:


Tabelle 1 (ist die auf der der UPDATE-Befehl angewendet werden soll):

Code:
TYPE        SRC_IP         SRC_NAS     LN_Country     LN_Operator 
Request    192.168.0.1                        Deutschland    Deutsch 


Request    192.168.0.2 


Request    192.168.0.3 


...



Tabelle 2:

Code:
IP                 Name      WBA      MCC      MNC 
192.168.0.1   TMEU      2           12          14 
192.168.0.2   TMUS      2           16          22 
...



Tabelle 3:

Code:
LN_Operator         LN_Country          MCC         MNC 
Deutsch               Deutschland         12             14 
Ami                     USA                     16             22 
...



Tabelle 4:

Code:
Betreiber           MCC           MNC 
Telekom            12               14 
O2                    16               22 
...



So das ist also der Aufbau der Tabellen. Jetzt will ich folgendes: Ich
muss in Tabelle 1 das Feld SRC_NAS befüllen. Die Kriterien dafür sind
folgende: Zuerst muss in Tabelle 2 nachgesehen werden ob WBA = 2.
Sollte dies der Fall sein, muss in Tabelle 1 nachgesehen werden ob TYPE
= Request und dann bei Tabelle 1 ob in LN_Country und LN_Operator etwas
steht. Sollte da etwas stehen, dann muss dieser Inhalt mit den Spalten
von Tabelle 3 verglichen werden und dann die MCC und die MNC (die aus
Tabelle 1 und Tabelle 3) verglichen werden mit den MCC und MNC aus
Tabelle 4. Wenn die zutreffen, dann muss aus Tabelle 4 der
Betreibername in Tabelle 1 unter SRC_NAS eingetragen werden. So das ist
das erste Kriterium. Und jetzt kommt das zweite. Sollte nämlich in
Tabelle 2 WBA = 2 sein, aber in Tabelle 1 unter LN_Operator und
LN_Country nichts stehen, dann muss die Spalte SRC_IP unter Tabelle 1
mit der IP in Tabelle 2 verglichen werden und wenn die übereinstimmen
muss der MCC und der MNC aus Tabelle 2 mit Tabelle 4 verglichen werden
und der Betreiber (bei dem MNC und MCC gleich sind) ind die Tabelle 1
unter SRC_NAS eingetragen werden.
Das ist also das Kriterium. Nur ich check nicht ganz wie ich das machen
soll. Ich hab auch schon nen Ansatz, der aber nicht so ganz
funktioniert. Hier mal mein SQL_Befehl:

Code:
UPDATE tabelle1, tabelle2, tabelle3, tabelle4 SET tabelle1.SRC_NAS = 
(SELECT CASE WHEN tabelle2.WBA = 2 AND tabelle1.TYPE = 'Request' AND 
tabelle1.LN_Operator = tabelle3.LN_Operator AND tabelle1.LN_Country = 
tabelle3.LN_Country THEN tabelle3.MCC = tabelle4.MCC AND tabelle3.MNC = 
tabelle4.MNC ELSE tabelle1.SRC_IP = tabelle2.IP AND tabelle2.MCC = 
tabelle4.MCC AND tabelle2.MNC = tabelle4.MNC)



Da fehlt was, nur ich weiß nicht genau was. Könnt ihr mir da helfen?
Habt ihr vielleicht nen Ansatz, der leichter gehen könnte als SELECT
CASE? Bin für jede Hilfe dankbar.


Gruß Benjamin


P.S.: Ich hoffe ich konnte es verständlich posten!
 

Neue Beiträge

Zurück