2013-03-07 3 views
0

У меня есть таблица календаря апартаментов для отображения цен для пользователей за каждый день. На этой таблице, некоторые из квартир включают в себя номера (id_room) для аренды:mysql sum самые низкие цены

столбцов таблицы/записей примера:

id_apart | id_room | date  | price | promo_price 
1  | 1 | 03-03-2013 | 20.00 | 0 
1  | 1 | 04-03-2013 | 20.00 | 0 
1  | 2 | 03-03-2013 | 50.00 | 45.00 
1  | 2 | 04-03-2013 | 50.00 | 45.00 

Я хочу, чтобы получить в результате, строки, которая имеет «цену» и «promo_price» объединил с суммой SUM самые низкие цены, найденные для квартиры/номеров между двумя датами.

Этот запрос суммируя все цены на проживание в квартире, и я не могу понять, как использовать MIN на этом, просуммировать только цены ДЕШЕВЫЕ номера:

select 
    concat(sum(if(promo_price>0,promo_price,price)), 
    "---", 
    sum(price)) 
from 
    apart 
where 
    id_apart=215 
    and date>= "2013-03-03" 
    and date<"2013-03-05" 

Результат от этого запрос: 90 --- 140

Обозначения: номер первой строки - сумма «promo_price»; второй номер сумма 'цена'

+0

, какой результат вы хотите получить? –

+0

Мой ответ был отредактирован с результатом. – Luis

ответ

0
select concat(promo_price, "--", price) from apart 
where id_apart=215 and date >= "2013-03-03" and date < "2013-03-05" 
and (promo_price + price)) = (select min(promo_price + price) from apart); 
0

Пожалуйста, попробуйте это

select concat(if(promo_price>0, 'true', sum(promo_price)),'---', sum(price)) 
from aprt where id_apart = 215 and date between "2013-03-03" and "2013-03-05"
+0

Спасибо, но это не подводит меня к SUM ценам CHEAPEST ... – Luis

0

я думаю, что это то, что вы ищете

select if(promo_price = 0,concat(sum(price),"---", sum(price)) ,sum(price)) as pri 
    from apart 
    where id_apart=1 and `date`>= "03-03-2013" and `date` < "05-03-2013" 
    and promo_price = 0 

OUTPUT.

PRIS 

40 --- 40

набл Обратите внимание, что я сделал id_apart = 1 из вашего примера выше.

+0

Это результат, который я получаю. Я хочу, чтобы он вернул только СУММУ ДЕШЕВОЙ комнаты. Я должен получить: 40 --- 40 – Luis

+0

это то, что вы хотите, я отредактировал свой ответ –

0

Рассматривается ли этот ответ?

select 
concat(sum(if(promo_price>0,promo_price,price)), 
"---", 
sum(price)) from apart group by id_room 
having sum(price) + sum(promo_price) = 
(select min(sum(price) + sum(promo_price)) from apart where id_apart =1 
group by id_room); 

Выход: 40 --- 40

Смежные вопросы