我想从值为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
答案 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;