我不需要检查业务是开放还是关闭,但我需要按天显示营业时间。
有一些选项:
1 - 一天营业一次(示例 - 从 10:00 到 18:30) - 表中的一行 2 - 一天营业两次(示例 - 从 10:00 到 14:00 和 15:00 到 18: 30) - 表 3 中的两行 - 业务可能已关闭(未插入行)
这是我的 MySql 小时存储表。在此示例中,企业(affiliate_id)在 0 到 4 天内开放两次,在第 5 天开放一次,在第 6 天关闭(这一天没有记录)
http://postimage.org/image/yplj4rumj/
我需要在网站上显示的内容(根据此数据库示例:
0,1,2,3,4 - 打开 10:00-14:00 和 15:00-18:30 5 - 打开 10:00-12:00 6 - 关闭
我如何得到如下结果:
http://postimage.org/image/toe53en63/
?
我尝试在 a.day=b.day 上使用 GROUPֹ_CONCAT 和 LEFT JOIN 查询同一张表,但没有运气:(
我的查询有样本(这是错误的)
SELECT GROUP_CONCAT( DISTINCT CAST( a.day AS CHAR )
ORDER BY a.day ) AS days, DATE_FORMAT( a.time_from, '%H:%i' ) AS f_time_from, DATE_FORMAT( a.time_to, '%H:%i' ) AS f_time_to, DATE_FORMAT( b.time_from, '%H:%i' ) AS f_time_from_s, DATE_FORMAT( b.time_to, '%H:%i' ) AS f_time_to_s
FROM business_affiliate_hours AS a LEFT
JOIN business_affiliate_hours AS b ON a.day = b.day
WHERE a.affiliate_id =57
GROUP BY a.time_from, a.time_to, b.time_from, b.time_to
ORDER BY a.id ASC
这是我的桌子:
CREATE TABLE IF NOT EXISTS `business_affiliate_hours` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`affiliate_id` int(10) unsigned NOT NULL DEFAULT '0',
`time_from` time NOT NULL,
`time_to` time NOT NULL,
`day` tinyint(1) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM;
INSERT INTO `business_affiliate_hours` (`id`, `affiliate_id`, `time_from`, `time_to`, `day`) VALUES
(53, 57, '10:00:00', '12:00:00', 5),
(52, 57, '15:00:00', '18:30:00', 4),
(51, 57, '10:00:00', '14:00:00', 4),
(50, 57, '15:00:00', '18:30:00', 3),
(49, 57, '10:00:00', '14:00:00', 3),
(48, 57, '15:00:00', '18:30:00', 2),
(47, 57, '10:00:00', '14:00:00', 2),
(46, 57, '15:00:00', '18:30:00', 1),
(45, 57, '10:00:00', '14:00:00', 1),
(44, 57, '15:00:00', '18:30:00', 0),
(43, 57, '10:00:00', '14:00:00', 0);
每天的营业时间可能不同,所以我想按相同的营业时间分组,并获取所有独特的营业时间顺序的天数列表。
需要你的帮助!
对不起图片链接,我不能上传图片到这里。