选择条目值为1的列名称

时间:2017-11-29 06:41:02

标签: php mysql

我想从值为1的表中检索列名

我的查询在下面给出......

mysqli_query($conn,"SELECT * FROM `tbl_therapist_schedule` WHERE `schedule_date`='30.11.2017'");

我的表格结构如下......

slot1 slot2 slot3
  1     1    0
  2     1    1
  1     1    2
  3     1    0

我的结果......

slot1 slot2 slot3

1 个答案:

答案 0 :(得分:1)

我严重感觉您的数据未正常化。我会将所有这些数据存储在一个包含元数据的单个列中,而不是为每个插槽分别设置列。

话虽这么说,获得所需输出的一种方法是聚合每个槽列并检查是否存在至少一个1值。然后,我使用GROUP_CONCAT生成匹配插槽的CSV列表。

SELECT GROUP_CONCAT(slots)
FROM
(
    SELECT
        CASE WHEN SUM(CASE WHEN slot1 = 1 THEN 1 ELSE 0 END) > 0
             THEN 'slot1' END AS slots
    FROM tbl_therapist_schedule
    WHERE schedule_date = '30.11.2017'
    UNION ALL
    SELECT
        CASE WHEN SUM(CASE WHEN slot2 = 1 THEN 1 ELSE 0 END) > 0
             THEN 'slot2' END
    FROM tbl_therapist_schedule
    WHERE schedule_date = '30.11.2017'
    UNION ALL
    SELECT
        CASE WHEN SUM(CASE WHEN slot3 = 1 THEN 1 ELSE 0 END) > 0
             THEN 'slot3' END
    FROM tbl_therapist_schedule
    WHERE schedule_date = '30.11.2017'
) t;

Demo