Mysql Case gruppieren

Gast #5499031
Lesenswert?

Hi,

gibt es eine Möglichkeit, dass man in MySQL mehrere Case gruppiert?

Beispiel: http://sqlfiddle.com/#!9/6a1759/

Aufbau der Datenbank
1
ID  |is_staff  |is_reporter  |is_superuser  |state
2
123  |0  |0  |1  |a
3
456  |1  |0  |1  |a
4
789  |0  |1  |1  |a
5
123  |1  |0  |1  |d
6
456  |1  |1  |1  |d

aktuell habe ich das so:
1
SELECT ID,
2
CASE WHEN is_staff = 1
3
      THEN 'Yes'   
4
      END AS 'is_staff?',
5
      
6
 CASE WHEN is_reporter = 1
7
      THEN 'Yes'   
8
      END AS 'is_reporter?',
9
             
10
 CASE WHEN is_superuser = 1
11
      THEN 'Yes'   
12
      END AS 'is_superuser?'
13

14
from users_list 
15
where state = 'a'
16
group by 1;
1
ID  |is_staff?  |is_reporter?  |is_superuser?
2
123  |(null)  |(null)  |Yes
3
456  |Yes  |(null)  |Yes
4
789  |(null)  |Yes  |Yes

Ginge das, dass man das so ausgegeben bekommt?
1
ID  |Status  
2
123  |superuser  
3
456  |staff, superuser  
4
789  |reporter, superuser
Gast #5499116
Lesenswert?

geht das mit mysql? wäre allerdings ohne komma :/
1
select id, is_staff || ' ' || is_reporter || ' ' || is_superuser from
2
(
3
SELECT ID,
4
CASE WHEN is_staff = 1
5
      THEN 'Yes'   
6
      END AS 'is_staff?',
7
      
8
 CASE WHEN is_reporter = 1
9
      THEN 'Yes'   
10
      END AS 'is_reporter?',
11
             
12
 CASE WHEN is_superuser = 1
13
      THEN 'Yes'   
14
      END AS 'is_superuser?'
15

16
from users_list 
17
where state = 'a'
18
group by 1;
19
)
20
order by 1

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren