[MySQL] Mehrere Daten in eine Spalte

Buba235

Erfahrenes Mitglied
Hallo!


Ich hab schon wieder so ein Problem, bei dem ich nicht weiß wie es zu erledigen ist (und ob es überhaupt so geht wie ich mir das vorstelle). Ich möchte in einer Tabelle so ca. 8 verschiedene Daten in nur eine Spalte schreiben. Ich hab mir zuerst mal eine VIEW kreiert:

Code:
CREATE VIEW alarm AS SELECT SRC_NAS, DST_REALM, DATE, TIME, DST_MCC,
DST_MNC, HOUR FROM mydb.test, alarmmanager.tblamwlan WHERE 
DST_MCC = alarmmanager.tblamwlan.MCC AND DST_MNC = alarmmanager.tblamwlan.MNC
GROUP BY DST_MCC;

Danach möchte ich die Daten und eineige Zusätze in meine Tabellenspalte schreiben. Das versuch ich so:

Code:
UPDATE alarmmanager.tblamwlan, alarmmanager.alarm SET alarmmanager.tblamwlan.AlarmText =  
SELECT "Autoalarm WLAN Authentication: ", alarm.SRC_NAS, " -> ", alarm.DST_REALM, "Date: ", 
alarm.DATE, "Hour: ", alarm.HOUR 
FROM alarm, tblamwlan WHERE alarmmanager.tblamwlan.MCC = alarm.DST_MCC AND 
alarmmanager.tblamwlan.MNC = alarm.DST_MNC GROUP BY SRC_NAS;

Der Update-Befehl klappt so aber nicht. Ich hab anscheinend noch nen Syntaxfehler. Der reine Select ohne Update funktioniert aber. Jetzt zu meiner Frage: Ist es denn möglich so viele verschiedene Daten (Spalten) in eine Spalte zu schreiben? Könnt ihr mir da vielleicht helfen?


Gruß Buba
 
Hallo!


Also ich hab jetzt rausgefunden wie ich das alles in eine Spalte schreibe:

Code:
UPDATE alarmmanager.tblamwlan, alarmmanager.alarm SET alarmmanager.tblamwlan.AlarmText =  
SELECT CONCAT ("Autoalarm WLAN Authentication: ", alarm.SRC_NAS, " -> ", alarm.DST_REALM, "Date: ", 
alarm.DATE, "Hour: ", alarm.HOUR)
FROM alarm, tblamwlan WHERE alarmmanager.tblamwlan.MCC = alarm.DST_MCC AND 
alarmmanager.tblamwlan.MNC = alarm.DST_MNC GROUP BY SRC_NAS;

Nur was genau ist denn an diesem Update falsch? Die Syntax passt doch, oder irre ich mich da?
 
Ich bin nicht der MySQL Experte aber probier mal das:
SQL:
UPDATE alarmmanager.tblamwlan SET alarmmanager.tblamwlan.AlarmText =  
CONCAT ("Autoalarm WLAN Authentication: ", alarm.SRC_NAS, " -> ", alarm.DST_REALM, "Date: ", alarm.DATE, "Hour: ", alarm.HOUR)
FROM alarm, tblamwlan WHERE alarmmanager.tblamwlan.MCC = alarm.DST_MCC AND 
alarmmanager.tblamwlan.MNC = alarm.DST_MNC;

Ich denke eine Unterabfrage ist hier nicht nötigt, daher habe ich das SELECT entfernt.
Da du nur die Tabelle tblamwlan aktualisiert muss beim Update auch die diese Tabelle stehen.
Warum du Gruppierst hab ich auch nicht verstanden und daher entfernt, aber ich kenne die Datenstruktur nicht.
Ausserdem solltest du einen EQUI JOIN bevorzugen, statt einen Old School Join.
Dafür ist mir aber die Syntax in MySQL nicht im Kopf bekannt und eine Doku hab ich auch gerade nicht da.
 
Zuletzt bearbeitet von einem Moderator:
Hallo!

Danke - es hat so geklappt, aber das SELECT hab ich beibehalten, da ich von den VIEWs ableite. Aber Danke nochmal!
 
Zurück