2016-03-02 3 views
1

Я делаю отчет об отеле, и мне нужно подвести некоторые сведения о борту, который они заказали.Выбор конкретных выходов с колонкой строк

Сейчас мой результат выглядит следующим образом:

SELECT meal.id, meal.title, 
    SUM(CASE WHEN meal.id >= 600 THEN '1' ELSE '0' END) as NoofMeals 
    FROM meal 
    JOIN itinerary i ON i.id = meal.journeyid 
    WHERE i.arrival BETWEEN '2015-01-01' AND '2015-01-01' 
    GROUP BY meal.title 

Мой выход выглядит следующим образом:

ID | title     | NoofMeals 

608 | Dinner     | 15 
621 | Breakfast    | 478 
648 | Lunch     | 74 
649 | Breakfast Box   | 5 
655 | Lunch-Box    | 7 
659 | American breakfast  | 73 
671 | Continental breakfast | 102 
674 | All Inclusive   | 312 
689 | All Inclusive from 3pm | 7 
693 | Picnic     | 47 

Мой желаемый Ouput будет выглядеть и собрать различные значения, как и все завтраки вещи (Завтрак, завтрак, американский завтрак и континентальный завтрак) или все All Inclusives (All Inclusive и All Inclusive с 15:00). К сожалению, идентификаторы не являются последовательными.

title     | NoofMeals 

Dinner     | 15 
Breakfast    | 658 
Lunch     | 81 
All Inclusive   | 319 
Picnic     | 7 

Мне больше не нужны идентификаторы, мне просто нужно переименовать заголовок еды.

Надеюсь, вы можете мне помочь, пожалуйста, успокойтесь, я довольно новичок в MySQL.

Спасибо заранее!

+0

Пожалуйста, разместите данные своего стола –

+0

Является ли пикник 7 или 47 желаемым выходом? –

+0

Это должно быть 47, извините! – Vivess

ответ

0

А «быстрый и грязный» решение будет использовать строковые функции:

SELECT 
    case 
    when meal.title like '%Breakfast%' then 'Breakfast' 
    when meal.title like '%All inclusive%' then 'All Inclusive' 
    else meal.title 
    end as title, 
    ... 
... 
GROUP BY 
    case 
    when meal.title like '%Breakfast%' then 'Breakfast' 
    when meal.title like '%All inclusive%' then 'All Inclusive' 
    else meal.title 
    end 

в то время как правильное решение, чтобы добавить столбец, который содержит категорию еды:

id | title     | category 
---|------------------------|-------------- 
1 | Breakfast    | Breakfast 
2 | American breakfast  | Breakfast 
3 | Continental breakfast | Breakfast 
4 | All Inclusive   | All Inclusive 
5 | All Inclusive from 3pm | All Inclusive 

и присоединиться к конкретная еда и группа по meal.category вместо meal.title.

+0

Спасибо, миллион, он отлично работает! Думаю, я сидел там слишком долго и пропустил лес за деревьями! Спасибо :) – Vivess