使用 MySQL 的餐厅营业时间数据

问题描述 投票:0回答:0

给定一张包含餐厅名称和营业时间的表格:

CREATE TABLE mytable_ (Name STRING, hours STRING);

-- insert the data into the original table
INSERT INTO mytable_ VALUES 
    ('Parkstreet', 'Mon-Sun 11:30 am - 9 pm'),
    ('Osakaya Restaurant', 'Mon-Thu, Sun 11:30 am - 9 pm / Fri-Sat 11 am - 12:30 am'),
    ('The Rose', 'Mon-Thu 11:30 am - 9 pm / Fri-Sat 11 am - 12:30 am / Sun 11:30 am - 9 pm');`

我想将col 2归一化为this

这是我试过的 SQL 查询,但它没有给出预期的输出:

SELECT 
      Name, subquery1.Day,
        SUBSTRING_INDEX(SUBSTRING_INDEX(subquery1.start_time, ' ', -5), ' ', 2) AS StartTime, 
        SUBSTRING_INDEX(SUBSTRING_INDEX(subquery1.end_time, ' ', -2), ' ', 2) AS EndTime,subquery1.day_of_week
FROM (SELECT
  name,
  hours AS start_time,
  hours AS end_time,
  CASE Day
    WHEN 0 THEN 'Sun'
    WHEN 1 THEN 'Mon'
    WHEN 2 THEN 'Tue'
    WHEN 3 THEN 'Wed'
    WHEN 4 THEN 'Thu'
    WHEN 5 THEN 'Fri'
    WHEN 6 THEN 'Sat'
  END AS Day,
  Day + 1 AS day_of_week
FROM mytable_
CROSS JOIN (
  SELECT 0 AS Day UNION ALL
  SELECT 1 UNION ALL
  SELECT 2 UNION ALL
  SELECT 3 UNION ALL
  SELECT 4 UNION ALL
  SELECT 5 UNION ALL
  SELECT 6
) AS days
WHERE LENGTH(hours) > 0) subquery1

ORDER By Name, Day_of_week`

我的做法对吗?

mysql normalization
© www.soinside.com 2019 - 2024. All rights reserved.