営業しているか閉店しているかを確認する必要はありませんが、営業時間を日ごとに表示する必要があります。
いくつかのオプションがあります:
1-営業時間は1日1回(サンプル-10:00〜18:30)-表2の1行-営業時間は1日2回(samlpe-1:00〜14:00および15:00〜18:) 30)-表3の2行-ビジネスは閉鎖される可能性があります(行は挿入されません)
ここに私のMySqlの保存時間表があります。このサンプルビジネス(affiliate_id)では、0から4までの2日間、5日目に1回、6日目に閉鎖されます(この日のレコードはありません)
http://postimage.org/image/yplj4rumj/
私がウェブサイトに表示する必要があるもの(このデータベースの例によると:
0,1,2,3,4-営業時間10:00-14:00および15:00-18:305-営業時間10:00-12:006-閉店
次のような結果を得る方法:
http://postimage.org/image/toe53en63/
?
GROUPֹ_CONCATとLEFTJOINを使用してa.day=b.dayに同じテーブルでクエリを実行しようとしましたが、運がありませんでした:(
私のクエリのサンプルがあります(それは間違っています)
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);
営業時間は毎日異なる場合があるので、同じ営業時間でグループ化し、営業時間のすべての一意の順序の日のリストを取得したいと思います。
君の力が必要!
画像へのリンクをお詫び申し上げます。ここに画像をアップロードすることはできません。