Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите пожалуйста в построении запроса? / 6 сообщений из 6, страница 1 из 1
18.12.2016, 17:34
    #39369614
Syrbek
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста в построении запроса?
Доброго времени суток. Помогите пожалуйста в построении запроса? Приходится устраивать цикл по базе что бы отобрать.
Есть таблица depo_outgo это исходящие товары со склада. Когда запрашиваем отчет по текущему месяцу необходимо исключить повтор показа следующих позиций.

Если одинаковые:
- Наименование товара
- Цена закупки
- Цена продажи

То фильтром ищем такие товары и суммируем и количество.
Количество товаров могут быть в месяц отправляться по разному по этому нам важно считать одинаковые товары суммируя их количество отправленных в месяц.
Например
Вчера :
Холодильник количество= 2 , Цена закупки=100, Цена продажи=150
Сегодня :
Холодильник количество= 3 , Цена закупки=100, Цена продажи=150
Завтра :
Холодильник количество= 4 , Цена закупки=100, Цена продажи=150
Как вы видите мы отправляем одинаковый товар с одинаковыми наценками в месяц но с разными количествами.
В отчете по месяцу мы должны видит только так :
Холодильник количество= 6 , Цена закупки=100, Цена продажи=150

Что я делаю:
1) Ищу уникальные наименование товаров. Сортировываю по имени так. Потому что в depo_outgo хранятся только ID товаров id_tov
Код: plsql
1.
2.
3.
4.
5.
6.
7.
SELECT `id_tov`, (SELECT `name` FROM `depo_income` WHERE `depo_income`.`id` = `depo_outgo`.`id_tov` ) AS name 
FROM `depo_outgo` 
WHERE 
`company_id`='67' 
AND `deleted` = 0 
AND FROM_UNIXTIME(`insert_date`, '%Y%m') = '201611' GROUP BY `id_tov` 
ORDER BY name'


2) Далее По циклу по каждому товару ищу одинаковые DISTINCT Цена закупки Цена продажи
Код: plsql
1.
2.
3.
4.
5.
6.
7.
SELECT DISTINCT depo_price,price 
FROM `depo_outgo` 
WHERE 
`id_tov` = '258' 
AND `company_id`='67' 
AND `deleted` = 0 
AND FROM_UNIXTIME(`insert_date`, '%Y%m') = '201611' 


3) Далее По циклу ищу если в таблице depo_outgo есть несколько одинаковые товары с Цена закупки Цена продажи то суммирую только их количество sum(`quantity`) AS quantity
Код: plsql
1.
2.
3.
4.
5.
6.
7.
SELECT sum(`quantity`) AS quantity 
FROM `depo_outgo` 
WHERE `depo_price` = '25.30' AND `price` = '31.80' 
AND `id_tov` = '258' 
AND `company_id`='67'
AND `deleted` = 0 
AND FROM_UNIXTIME(`insert_date`, '%Y%m') = '201611'


Таким образом получается исключить повторы
Каким образом можно оптимизировать эти действия? В запросах не силен помогите пожалуйста?
...
Рейтинг: 0 / 0
18.12.2016, 18:41
    #39369630
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста в построении запроса?
Syrbek Например
Вчера :
Холодильник количество= 2 , Цена закупки=100, Цена продажи=150
Сегодня :
Холодильник количество= 3 , Цена закупки=100, Цена продажи=150
Завтра :
Холодильник количество= 4 , Цена закупки=100, Цена продажи=150
Как вы видите мы отправляем одинаковый товар с одинаковыми наценками в месяц но с разными количествами.
В отчете по месяцу мы должны видит только так :
Холодильник количество=6 , Цена закупки=100, Цена продажи=150Вот будь там 5, 7 или 9 - я бы понял... но 6 у меня ну никак не получается...
...
Рейтинг: 0 / 0
18.12.2016, 18:50
    #39369634
Syrbek
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста в построении запроса?
AkinaSyrbek Например
Вчера :
Холодильник количество= 2 , Цена закупки=100, Цена продажи=150
Сегодня :
Холодильник количество= 3 , Цена закупки=100, Цена продажи=150
Завтра :
Холодильник количество= 4 , Цена закупки=100, Цена продажи=150
Как вы видите мы отправляем одинаковый товар с одинаковыми наценками в месяц но с разными количествами.
В отчете по месяцу мы должны видит только так :
Холодильник количество=6 , Цена закупки=100, Цена продажи=150Вот будь там 5, 7 или 9 - я бы понял... но 6 у меня ну никак не получается...
Прошу прощение за опечатку должно быть сумма Холодильник количество=9 ошибка в моем описании
...
Рейтинг: 0 / 0
18.12.2016, 21:18
    #39369686
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста в построении запроса?
Ну тогда просто GROUP BY + SUM(). Всё получается одним запросом.
...
Рейтинг: 0 / 0
18.12.2016, 23:44
    #39369739
Syrbek
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста в построении запроса?
AkinaНу тогда просто GROUP BY + SUM(). Всё получается одним запросом.
В двух словах не понятно. Можно по подробнее?
...
Рейтинг: 0 / 0
21.12.2016, 13:33
    #39371895
Syrbek
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста в построении запроса?
Syrbek,
Вопрос решен:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select id_tov, depo_price, price, sum(quantity), 
(SELECT `name` FROM `depo_income` WHERE `depo_income`.`id` = `depo_outgo`.`id_tov` ) AS name
from depo_outgo 
WHERE 
`company_id`='67' 
AND `deleted` = 0 
AND FROM_UNIXTIME(`insert_date`, '%Y%m') = '201611' 
GROUP BY id_tov, depo_price, price
ORDER BY name


Тему можно закрывать.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите пожалуйста в построении запроса? / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]