powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите пожалуйста в построении запроса?
6 сообщений из 6, страница 1 из 1
Помогите пожалуйста в построении запроса?
    #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
Помогите пожалуйста в построении запроса?
    #39369630
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Syrbek Например
Вчера :
Холодильник количество= 2 , Цена закупки=100, Цена продажи=150
Сегодня :
Холодильник количество= 3 , Цена закупки=100, Цена продажи=150
Завтра :
Холодильник количество= 4 , Цена закупки=100, Цена продажи=150
Как вы видите мы отправляем одинаковый товар с одинаковыми наценками в месяц но с разными количествами.
В отчете по месяцу мы должны видит только так :
Холодильник количество=6 , Цена закупки=100, Цена продажи=150Вот будь там 5, 7 или 9 - я бы понял... но 6 у меня ну никак не получается...
...
Рейтинг: 0 / 0
Помогите пожалуйста в построении запроса?
    #39369634
Syrbek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AkinaSyrbek Например
Вчера :
Холодильник количество= 2 , Цена закупки=100, Цена продажи=150
Сегодня :
Холодильник количество= 3 , Цена закупки=100, Цена продажи=150
Завтра :
Холодильник количество= 4 , Цена закупки=100, Цена продажи=150
Как вы видите мы отправляем одинаковый товар с одинаковыми наценками в месяц но с разными количествами.
В отчете по месяцу мы должны видит только так :
Холодильник количество=6 , Цена закупки=100, Цена продажи=150Вот будь там 5, 7 или 9 - я бы понял... но 6 у меня ну никак не получается...
Прошу прощение за опечатку должно быть сумма Холодильник количество=9 ошибка в моем описании
...
Рейтинг: 0 / 0
Помогите пожалуйста в построении запроса?
    #39369686
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну тогда просто GROUP BY + SUM(). Всё получается одним запросом.
...
Рейтинг: 0 / 0
Помогите пожалуйста в построении запроса?
    #39369739
Syrbek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AkinaНу тогда просто GROUP BY + SUM(). Всё получается одним запросом.
В двух словах не понятно. Можно по подробнее?
...
Рейтинг: 0 / 0
Помогите пожалуйста в построении запроса?
    #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
6 сообщений из 6, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите пожалуйста в построении запроса?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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