2016-08-02 13 views
0

ich eine Ansicht bin Gebäude als ...In MySQL wie in einem SELECT Fall mit

create view usersAndTickets as 
    select tickets.subject as 'Name', 
      'automatically imported ticket from former support web' as 'Description', 
      case tickets.department_id when 3 then 'Support' when 4 then 'Support' when 5 then 'Feature Request' when 2 then 'Sales' end as 'Type', 
      case tickets.priority_id when 1 then 'Low' when 2 then 'Normal' when 3 then 'Urgent' end as 'Severity', 
      case tickets.status_id when 1 then 'Under Review' when 2 then 'Closed' when 3 then 'Waiting on Customer' when 4 then 'New' when 7 then 'New' end as 'Status', 
      users.email as 'EmailOfUserAssignedTo' 
    from custom_fields_values, tickets, users where tickets.staff_id=users.id; 

In der Ansicht folgt, verwende ich CASE WHEN ... bestimmte Werte Zahlen mit Text zu ersetzen.

Aber ich habe auch einen Fall, wo ich will nicht eine strikte Gleichheit Vergleich zu tun, sondern würde Ich mag wie STHG tun

case when custom_fields_values.value like '%Bar%' then 'Acme Product #1' end as 'Product', 
case when custom_fields_values.value like '%Foo%' then 'Acme Product #2' end as 'Product', 

Aber natürlich beschwert MySQL das Feld ‚Produkt‘ ist bereits vorhanden .

Wie verwenden wir CASE WHEN mit passenden Funktionen (LIKE) statt Gleichheit?

+1

'CASE ... WHEN ... THEN ... WHEN ... THEN ... ELSE ... END' – MatBailie

+0

Das hat nicht funktioniert. Die Klammern sind erforderlich es scheint –

Antwort

4

Ich glaube, Sie nur mehrere Klauseln im case Ausdruck wollen:

(case when custom_fields_values.value like '%Bar%' then 'Acme Product #1' 
     when custom_fields_values.value like '%Foo%' then 'Acme Product #2' 
end) as Product, 
+0

Spot on, danke. –