我试图从我们的数据库中检索数据,我加入了另一个表,需要从该列中获取数据,但被分为多个列。
到目前为止我有这个代码:
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;
因此,一家餐厅的餐桌额外事件餐价包含多个“餐”,每个“餐”都有一个类型和价格。
以下是列:
id
extras_events_id
meal_type
price
created_at
updated_at
一个餐厅可以有多个用餐类型和价格,但它们在同一列中,因此在上一个select子查询中,我尝试将它们拆分为3列:早午餐价格、午餐价格、晚餐价格。
我经常遇到的错误是:
子查询返回多于1行。
1条答案
按热度按时间cclgggtu1#
您从未在subselect语句中完成查询。
extras_events_id
应该相等extras_events.id
. 不包括它,你只是简单地检查它是否true
,每meal_type
餐桌上的“午餐”: