Skip to content
Advertisement

Get column name of Table based on query

I have this SQL query

Query

Select * from `trees` WHERE id = '1' AND ( `apple`='1' OR `banana` = '1' OR `coconut` = '1' OR `pear` ='1') ;

And this is my table let’s say

Tree_table

id | apple | banana | coconut | pear|
1     1       1       1           0
2     0       0        1          1
3     1       0        0          1

So I want my output to be

apple
banana
coconut 

Is this possible using SQL query or even PHP will do

Advertisement

Answer

You need to unpivot the data. In MySQL, this is probably most easily done with union all:

select tree
from ((select id, 'apple' as tree
       from trees
       where apple = 1
      ) union all
      (select id, 'banana' as tree
       from trees
       where banana = 1
      ) union all
      (select id, 'coconut' as tree
       from trees
       where coconut = 1
      ) union all
      (select id, 'pear' as tree
       from trees
       where pear = 1
      )
     ) t
where id = 1;
User contributions licensed under: CC BY-SA
4 People found this is helpful
Advertisement