2015-07-01 3 views
0

У меня есть таблица поиска цен в MySQL, где мне нужно найти правильную цену, основанную на количестве транзакций.Уровни ценообразования SQL

Скажет, например, у меня есть ценовая таблица pricing, выглядит следующим образом:

product quantity price 
prod1  1   4 
prod1  10   3 
prod1  100   2 
prod1  1000  1 
prod2  1   0.4 
... 

И у меня есть таблица с именем transaction, где содержатся данные о продажах:

product sales 
prod1  144 
prod2  2 
... 

Как я могу получить продажи умножаются на правильную цену за единицу, исходя из количества. Что-то любит:

product sales quantity unitPrice 
prod1  144  100   2 
prod2.... 

Я попытался соединить две таблицы на продукт, но не знаю, куда идти оттуда, спасибо!

+0

Почему вы не используете простое соединение на продукте? и почему первая строка вывода (144, 100, 2)? с логикой? является результатом для prod1 ((144,1, 4), (144, 10,3), (144, 100, 2))? –

ответ

0

Один из способов, чтобы получить цену использует коррелировала подзапрос:

select t.*, 
     (select p.price 
     from pricing p 
     where p.product = t.product and p.quantity >= t.quantity 
     order by p.quantity 
     limit 1 
     ) as price 
from transaction t; 

Аналогичный подзапрос может быть использован для получения другой информации, такой как ценовой ярусе.

Для обеспечения производительности вам нужен индекс на pricing(product, quantity).

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