我正在为一些私有(private)网站制作数据库。在我的数据库中,我有一个名为 times 的表,我可以在其中保存用户名和用户空闲的时间。表格看起来像这样。
|uid |Monday|Tuesday |... |Saturday |Sunday |t12|t13|t14|...|t19|t20
_____________________________________________________________________
uid 是用户名,t12-t20 是时间(t16 = 1、>星期一 = 1 表示用户在星期一 16 点有空。
一行的示例是:
|alex1|1|1|0|0|0|0|1|0|0|0|0|0|1|1|1|1|
这意味着用户alex1在周一、周二和周日的 17、18、19 和 20 点有空。
表中可以有多个用户,某些用户可以有多次。例如,用户 alex1 可以位于具有不同保存时间的更多行中。 (示例:一行表示他在周一和周五 15 点之后有空,而另一行表示他在周六 14 点、17 点和 20 点有空)
示例:
gordon | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
gordon | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
第一行表示:用户 gordon 在周一和周二 12 点有空 第二行表示:用户 gordon 在周三 13 点有空
问题是:
如何进行查询并通过表给出结果:
Day | t12 | t13 | t14 | t15 | t16 | t17 | t18 | t19 | t20 |
________________________________________________________________
Monday 5 4 8 8 8 4 0 0 4
Tuesday 2 2 2 2 2 1 0 0 2
Wednesday 10 10 10 2 8 10 8 7 7
Thursday 5 4 8 8 8 4 0 1 4
Friday 5 4 3 7 8 4 9 0 4
Saturday 8 9 8 3 9 4 3 0 4
Sunday 1 4 8 8 1 4 0 9 3
这意味着:周一 14 点有 8 个用户空闲,或者周五 20 点有 4 个用户空闲。
最佳答案
更好的设计的一个例子是有一个如下表:
可用性
user day time
1 1 16
这可能不是最好的解决方案,但它对您当前的设置来说是一个巨大的改进。
关于mysql - 如何计算列中的值并将每个列名称及其结果保存在一行中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56101085/