gpt4 book ai didi

php - 电影院/电影院的调度系统 - 多个放映时间

转载 作者:行者123 更新时间:2023-11-30 23:08:15 24 4
gpt4 key购买 nike

我目前正在使用 PHP 和 mysql 开发一个网络应用程序,允许管理员添加电影和放映时间。

电影院有 3 个不同的剧院:剧院 1、剧院 2 和剧院 3。

我在组合多个放映时间时遇到了问题。

这是我的“table_showtimes”。

movie    day_start     day_end        showtime    theatre
Hobbit 2014-01-01 2014-01-10 16.00 1
Hobbit 2014-01-08 2014-01-14 18.00 1

如您所见,电影“霍比特人”将于 1 月 1 日至 1 月 10 日下午 4 点在 1 号剧院放映从 1 月 8 日到 1 月 14 日下午 6 点也在 1 号剧院。

现在,我想为用户显示以下前端 View ,按时间顺序排列:

HOBBIT
01/01 - 07/01 16.00 Theatre 1
08/01 - 10/01 16.00 + 18.00 Theatre 1
11/01 - 14/01 18.00 Theatre 1

我在显示合并的 showimtes (16.00 + 18.00) 时遇到困难。

你认为我应该遍历一个月的每一天并检查可用的放映时间还是通过 SQL 进行排序?

非常感谢您的建议!马蒂亚斯

最佳答案

需要 GROUP_CONCAT 来汇总放映时间。

我简单地设置了这个:http://sqlfiddle.com/#!2/f8e40/32/0

基本上,您需要从一种枚举所有日期的方法开始,如下所示:

SELECT (day_start + INTERVAL numbers.number DAY) as DAY
FROM (
SELECT min(day_start) AS day_start,
max(day_end) AS day_end
FROM showtimes
) AS daterange
JOIN (
SELECT (u.number + 10*t.number + 100*h.number) AS number
FROM number AS u
JOIN number AS t
JOIN number AS h
ORDER BY number
) AS numbers
WHERE numbers.number <= datediff(day_end, day_start)

然后您像这样将它加入您的放映时间表,以获得包含每一天的行的结果集。

SELECT day, 
movie,
GROUP_CONCAT(date_format(showtime,'%H:%i')
ORDER BY showtime
SEPARATOR ' + ') AS showtimes,
theatre
FROM showtimes AS s
JOIN (
/* the query enumerating the days */
) AS d
ON d.day BETWEEN s.day_start AND s.day_end
GROUP BY day,movie, theatre

了解 GROUP_CONCAT 如何在 GROUP BY 的上下文中工作?

       GROUP_CONCAT(date_format(showtime,'%H:%i')
ORDER BY showtime
SEPARATOR ' + ') AS showtimes

特别说明:我必须创建一个包含从 0 到 9 的整数的表编号,才能使日期枚举起作用。

关于php - 电影院/电影院的调度系统 - 多个放映时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20914708/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com