【发布时间】:2019-01-17 16:32:40
【问题描述】:
我正在尝试从我们的数据库中检索数据,并且我加入了另一个表,我需要从该列中获取数据,但被分成多个列。
到目前为止我有这个代码:
SELECT
restaurants.name AS 'Name',
extras_time_slots.restaurant_id AS 'DC ID',
SUM(capacity) AS 'Seats opened',
meal_group_name AS 'Category',
CASE
WHEN extras_events.status = 0 THEN 'Offline'
WHEN extras_events.status = 1 THEN 'Submitted'
WHEN extras_events.status = 2 THEN 'Online'
ELSE 'Unknown'
END AS 'Status',
CASE
WHEN restaurants.region_id = 29 THEN 'Beijing'
WHEN restaurants.region_id = 31 THEN 'Shanghai'
WHEN restaurants.region_id = 63 THEN 'Guangzhou'
WHEN restaurants.region_id = 83 THEN 'Shenzhen'
WHEN restaurants.region_id = 86 THEN 'Hangzhou'
WHEN restaurants.region_id = 88 THEN 'Suzhou'
WHEN restaurants.region_id = 91 THEN 'Chengdu'
ELSE 'Unknown'
END AS 'City',
(
SELECT extras_event_meals.price
FROM extras_event_meals
WHERE meal_type LIKE 'lunch'
AND extras_events_id
) AS 'Lunch price',
(
SELECT extras_event_meals.price
FROM extras_event_meals
WHERE meal_type LIKE 'dinner'
AND extras_events_id
) AS 'Dinner price',
(
SELECT extras_event_meals.price
FROM extras_event_meals
WHERE meal_type LIKE 'brunch'
AND extras_events_id
) AS 'Brunch price'
FROM extras_time_slots
JOIN restaurants
ON extras_time_slots.restaurant_id = restaurants.id
JOIN extras_events
ON extras_events.restaurant_id = restaurants.id AND extras_events.project = extras_time_slots.project
JOIN extras_event_meals
ON extras_event_meals.extras_event_id = extras_events.id
WHERE extras_time_slots.project = 'rwcn_autumn_2018'
GROUP BY restaurants.id;
因此,extras_events_meal_price 表为一家餐厅提供了多个具有类型和价格的“餐点”。
以下是列:
id
extras_events_id
meal_type
price
created_at
updated_at
一家餐厅可以有多个餐点类型和价格,但它们在同一列中,因此在最后一个 SELECT 子查询中,我试图将它们分成 3 列:早午餐价格、午餐价格、晚餐价格。
我一直得到的错误是:
子查询返回多于 1 行。
【问题讨论】:
-
另外,如果我没有清楚地解释这一点,请随时要求澄清,或者如果我以错误的方式提出问题,请随时纠正我。