Hallo zusammen,
ich habe nun einen Weg gefunden, die Dynmaischen Felder mit MYSQL auszulesen. Da ich aber kein SQL bzw. OTRS Profi bin, könnte man es auch eventuell auf eine andere Art lösen. Diese Lösung von mir funktioniert aber soweit für meine Bedürfnisse:
Code: Select all
Select distinct
t.tn AS 'Ticketnummer',
t.title AS 'Tickettitel',
t.create_time AS 'Erstelldatum',
ts.name AS 'Ticketstatus',
q.name AS 'Queue',
(select coalesce(field_display, value_text) from dynamic_field join dynamic_field_value on dynamic_field.id = dynamic_field_value.field_id left outer join dynamic_fields_config on dynamic_fields_config.field_name = dynamic_field.name and dynamic_fields_config.field_value = value_text where object_id = t.id and name = 'DES DYNAMISCHEN FELD' ) as 'ALIAS DER ANGEZEIGT WERDEN SOLL',
(select group_concat(coalesce(field_display, value_text) separator '; ') from dynamic_field join dynamic_field_value on dynamic_field.id = dynamic_field_value.field_id left outer join dynamic_fields_config on dynamic_fields_config.field_name = dynamic_field.name and dynamic_fields_config.field_value = value_text where object_id = t.id and name = 'DES DYNAMISCHEN FELD' ) as 'ALIAS DER ANGEZEIGT WERDEN SOLL',
(select coalesce(field_display, value_int) from dynamic_field join dynamic_field_value on dynamic_field.id = dynamic_field_value.field_id left outer join dynamic_fields_config on dynamic_fields_config.field_name = dynamic_field.name and dynamic_fields_config.field_value = value_int[color=#FF0000][quote]HIER STEHT DAS VALUE_INT FÜR EINE CHECKBOX[/quote][/color] where object_id = t.id and name = 'DES DYNAMISCHEN FELD' ) as 'ALIAS DER ANGEZEIGT WERDEN SOLL',
(select coalesce(field_display, value_text) from dynamic_field join dynamic_field_value on dynamic_field.id = dynamic_field_value.field_id left outer join dynamic_fields_config on dynamic_fields_config.field_name = dynamic_field.name and dynamic_fields_config.field_value = value_text where object_id = t.id and name = 'DES DYNAMISCHEN FELD' ) as 'ALIAS DER ANGEZEIGT WERDEN SOLL',
(select group_concat(coalesce(field_display, value_text) separator '; ') from dynamic_field join dynamic_field_value on dynamic_field.id = dynamic_field_value.field_id left outer join dynamic_fields_config on dynamic_fields_config.field_name = dynamic_field.name and dynamic_fields_config.field_value = value_text where object_id = t.id and name = 'DES DYNAMISCHEN FELD' ) as 'ALIAS DER ANGEZEIGT WERDEN SOLL',
(select group_concat(coalesce(field_display, value_text) separator '; ') from dynamic_field join dynamic_field_value on dynamic_field.id = dynamic_field_value.field_id left outer join dynamic_fields_config on dynamic_fields_config.field_name = dynamic_field.name and dynamic_fields_config.field_value = value_text where object_id = t.id and name = 'DES DYNAMISCHEN FELD' ) as 'ALIAS DER ANGEZEIGT WERDEN SOLL'
from
ticket t
LEFT OUTER JOIN
ticket_state ts ON t.ticket_state_id = ts.id
LEFT OUTER JOIN
dynamic_field d ON d.id = t.tn
LEFT OUTER JOIN
queue q ON q.id = t.queue_id
AND t.create_time BETWEEN '2014-01-01 00:01:00' AND '2014-01-21 23:59:00%'
ORDER BY t.tn DESC
Das schwierige hierfür war aber, dass ich eine Hilfstabelle "dynamic_fields_config" erstellen musste um aus den Schlüsseln die Werte zu machen. Diese Tabelle besteht aus den Columns "id", "field_name", "field_value" und "field_display".
Die Hilfstabelle muss man dann mit den Werten der dynamischen Feldern befüllen. Hierzu diente mir dieses SQL Statement:
Code: Select all
insert into dynamic_fields_config(id, field_name, field_value, field_display) VALUES (fortlaufende ID Nummer, 'Name des Dynamischen Feld', 'Schlüssel des Dynamischen Feld', 'Wert des Dynamischen Feld')
Die Hilfstabelle muss man auch regelmässig bei Änderungen in den dynamischen Feldern mitanpassen (vll ein kleiner Nachteil).
Kleine Erklärung noch zum Code:
GROUP_CONCAT FÜR MULTISELECTFELDER:
Code: Select all
(select group_concat(coalesce(field_display, value_text) separator '; ') from dynamic_field join dynamic_field_value on dynamic_field.id = dynamic_field_value.field_id left outer join dynamic_fields_config on dynamic_fields_config.field_name = dynamic_field.name and dynamic_fields_config.field_value = value_text where object_id = t.id and name = 'DES DYNAMISCHEN FELD' ) as 'ALIAS DER ANGEZEIGT WERDEN SOLL',
Auswahlwerte werden in einer Zeile ausgegeben und mit ";" getrennt.
VALUE_INT für Checkboxen:
Code: Select all
(select coalesce(field_display, value_int) from dynamic_field join dynamic_field_value on dynamic_field.id = dynamic_field_value.field_id left outer join dynamic_fields_config on dynamic_fields_config.field_name = dynamic_field.name and dynamic_fields_config.field_value = value_int where object_id = t.id and name = 'DES DYNAMISCHEN FELD' ) as 'ALIAS DER ANGEZEIGT WERDEN SOLL',
Ich habe natürlich auch die Checkboxenm mit "Ja" für "1" und "Nein" für "0" mit in die Hilfstabelle mitaufgenommen. Damit nun ja oder nein angezeigt werden, muss man die "value_text" in eine "value_int" austauschen.
Vielleicht kann es ja jemand von Euch brauchen, der genauso wenig Ahnung von OTRS und MYSQL hat wie ich. (Hat mich eine Menge Gummibärchen gekostet
)