powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / приобретение- продажа=остаток на конец
36 сообщений из 36, показаны все 2 страниц
приобретение- продажа=остаток на конец
    #39122781
ven1dy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет!
Нужно вычислить: есть остаток товара, далее приобрели определенное кол-во и продали. Остаток на конец чтобы вычислялся.
Если при этом товара прождали ноль "0", он не определяется.Очень прошу вашей помощи, ибо я вообще не могу догнать как это сделать, сгруппировать могу, а вот чтобы и вычисляло... уже проблема
Например Кофе: остаок на начало 10 шт. Приобретено 15 шт. Продано 0. Как показать остаток?
...
Рейтинг: 0 / 0
приобретение- продажа=остаток на конец
    #39122787
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ven1dy,

пространственный вопрос....
а вы как учитываете остаток на конец месяца, приход, расход?
Если на словах - то Ост+Приход-Расход, строго по тексту...
...
Рейтинг: 0 / 0
приобретение- продажа=остаток на конец
    #39122796
ven1dy,

структуру таблицы, тестовые данные приведи.
но вообще, есть подозрение, что тебе нужен накопительный итог...
причем, при его расчете приход/расход нужно брать с разными знаками.
...
Рейтинг: 0 / 0
приобретение- продажа=остаток на конец
    #39123060
ven1dy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть 2 таблицы
...
Рейтинг: 0 / 0
приобретение- продажа=остаток на конец
    #39123061
ven1dy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Из них надо получить такую таблицу
...
Рейтинг: 0 / 0
приобретение- продажа=остаток на конец
    #39123064
ven1dy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сгруппировать 1 таблицу я смог, а вот как 2 в одну я не знаю

SELECT SUM(`Сумм Купили` ) , `id_prod`
FROM `талбица`
GROUP BY таблица.id_prod
...
Рейтинг: 0 / 0
приобретение- продажа=остаток на конец
    #39123098
ven1dy,

объединить таблицы через UNION ALL, далее - посчитать накопительный итог. поступления брать с плюсом, продажи с минусом. в итоге получатся остатки на каждую дату.
...
Рейтинг: 0 / 0
приобретение- продажа=остаток на конец
    #39123100
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Типа
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
select t1.id,t1.mark,t1.model,t2.p_cnt,t2.p_sum,t3.s_cnt,t3.s_sum
from
(
  select id,mark,model from purchase
  union
  select id,mark,model from sale
) t1
left join
(
  select id,mark,model,sum(amount) p_cnt,sum(summ) p_sum
  from purchase
  group by id,mark,model
) t2
left join
(
  select id,mark,model,sum(amount) s_cnt,sum(summ) s_sum
  from sale
  group by id,mark,model
) t3
on t1.id=t2.id and t1.mark=t2.mark and t1.model=t2.model
on t1.id=t3.id and t1.mark=t3.mark and t1.model=t3.model
...
Рейтинг: 0 / 0
приобретение- продажа=остаток на конец
    #39123186
ven1dy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый Э - Эх,

Попробовал через UNION ALL
Такую глупость выдает, я даже не понимаю откуда такие цифры беруться =((
Да и не вывело они столбцы которые мне нужны, выводит только таблицу закупок, а продаж нету.
...
Рейтинг: 0 / 0
приобретение- продажа=остаток на конец
    #39123192
ven1dy,

ошибка в 17 строке. правильный ответ - 42
...
Рейтинг: 0 / 0
приобретение- продажа=остаток на конец
    #39123229
ven1dy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

Спасибо за твой ответ, где-то есть истина, но почему-то у меня выводит ошибку.

Делаю такой запрос:
SELECT products.id,products.product_name,
buying.quantity_buying,buying.summ_good_buying
,order.quantity_order,order.summ_good_order
from
(
select id,product_name from buying
union
select id,product_name from order
) products
left join
(
select id,product_name,SUM(amount) quantity_buying,SUM(summ) summ_good_buying
from buying
group by id,product_name
) buying
left join
(
select id,product_name,SUM(amount) quantity_order,SUM(summ) summ_good_order
from order
group by id,product_name
) order
on products.id=buying.id and products.product_name=buying.product_name
on products.id=order.id and products.product_name=order.product_name

Выбивает вот такую ошибку
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'order ) products left join ( select id,product_name,SUM(amount) quantity' at line 8
...
Рейтинг: 0 / 0
приобретение- продажа=остаток на конец
    #39123255
ven1dy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый Э - Эх,

Я не знаю как мне оледенить эти таблицы.
...
Рейтинг: 0 / 0
приобретение- продажа=остаток на конец
    #39123257
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ven1dynear 'order )Слово order является зарезервированным словом, не стоит так называть объекты в БД и алиасы.
...
Рейтинг: 0 / 0
приобретение- продажа=остаток на конец
    #39123266
ven1dy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft,

Спасибо, отредактировал, теперь другая ошибка:
Unknown column 'buying.quantity_buying' in 'field list'
Хотя данный столбик есть в таблице buying
...
Рейтинг: 0 / 0
приобретение- продажа=остаток на конец
    #39123295
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Совокупность имён и алиасов таблиц всего запроса НЕ ДОЛЖНА содержать дубликатов.
...
Рейтинг: 0 / 0
приобретение- продажа=остаток на конец
    #39123313
ven1dy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,
Вроде все исправил, но все равно ошибку выдает:
#1054 - Unknown column 'products_2.id_good' in 'field list'

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
SELECT products_2.id_good,products_2.product_name
    ,buying.quantity_buying,buying.summ_good_buying
    ,selling.quantity_order,selling.summ_good_order
FROM
(
  SELECT id_good_buying,product_name_buying FROM buying
  UNION
  SELECT id_good_selling,product_name_selling FROM selling
  ) products_2
LEFT JOIN
(
  SELECT id_good_buying,product_name_buying,SUM('quantity_buying') ,SUM('summ_good_buying') 
  FROM buying
  GROUP BY id_good_buying,product_name_buying
) buying
LEFT JOIN
(
  SELECT id_good_selling,product_name_selling,SUM('quantity_order') ,SUM('summ_good_order')
  FROM selling
  GROUP BY id_good_selling,product_name_selling
) selling
on products_2.id_good=buying.id_good_buying
and products_2.product_name=buying.product_name_buying
on products_2.id_good=selling.id_good_selling
and products_2.product_name=selling.product_name_selling
...
Рейтинг: 0 / 0
приобретение- продажа=остаток на конец
    #39123322
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ven1dy#1054 - Unknown column 'products_2.id_good' in 'field list'Так в алиасе products_2 действительно нет поля id_good.
...
Рейтинг: 0 / 0
приобретение- продажа=остаток на конец
    #39123338
ven1dy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft,
Опять переделал запрос, все равно ошибка, но теперь на amount, чё это вообще?
Я брал пример с сообщения от Akina
#1054 - Unknown column 'amount' in 'field list'

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
SELECT t1.id_good,t1.product_name
    ,t2.quantity_buying,t2.summ_good_buying
    ,t3.quantity_order,t3.summ_good_order
FROM
(
  SELECT id_good,product_name FROM buying
  UNION
  SELECT id_good,product_name FROM selling
  ) t1
LEFT JOIN
(
  SELECT id_good,product_name,sum(amount) quantity_buying,sum(summ) summ_good_buying 
  FROM buying
  GROUP BY id_good,product_name
) t2
LEFT JOIN
(
  SELECT id_good,product_name,sum(amount) quantity_order,sum(summ) summ_good_order
  FROM selling
  GROUP BY id_good,product_name
) t3
on t1.id_good=t2.id_good
and t1.product_name=t2.product_name
on t1.id_good=t3.id_good
and t1.product_name=t3.product_name
...
Рейтинг: 0 / 0
приобретение- продажа=остаток на конец
    #39123342
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ven1dyЯ брал пример с сообщения от Akina
#1054 - Unknown column 'amount' in 'field list'Ну так поля надо указывать так, как они у вас реально называются, а не как Akina предположил.
Вы сами раньше писали SUM('quantity_buying'), а теперь вдруг стало sum(amount).
...
Рейтинг: 0 / 0
приобретение- продажа=остаток на конец
    #39123344
ven1dy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftven1dyЯ брал пример с сообщения от Akina
#1054 - Unknown column 'amount' in 'field list'Ну так поля надо указывать так, как они у вас реально называются, а не как Akina предположил.
Вы сами раньше писали SUM('quantity_buying'), а теперь вдруг стало sum(amount).

У меня стоят везде реальные названия, все как и в таблицах.

Сменил как было раньше на SUM('quantity_buying')
теперь вот такая ошибочка...
#1054 - Unknown column 't2.quantity_buying' in 'field list'
...
Рейтинг: 0 / 0
приобретение- продажа=остаток на конец
    #39123347
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ven1dyтеперь вот такая ошибочка...
#1054 - Unknown column 't2.quantity_buying' in 'field list'А алиас на SUM('quantity_buying') не надо было убирать. Только назовите его иначе, чтобы с другими именами полей и алиасов не совпадал.
...
Рейтинг: 0 / 0
приобретение- продажа=остаток на конец
    #39123352
ven1dy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftven1dyтеперь вот такая ошибочка...
#1054 - Unknown column 't2.quantity_buying' in 'field list'А алиас на SUM('quantity_buying') не надо было убирать. Только назовите его иначе, чтобы с другими именами полей и алиасов не совпадал.

Спасибо за ваши ответы, но я не понимаю "не надо было убирать. Только назовите его иначе". Не понимаю что конкретно и где надо изменить, можете взять кусочек кода и исправить.
Буду очень благодарен.
...
Рейтинг: 0 / 0
приобретение- продажа=остаток на конец
    #39123357
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ven1dy,

фрагмент, который вы пишете местами SUM('quantity_buying'), а местами sum(amount) должен выглядеть так:
Код: sql
1.
sum(quantity_buying) sum_quantity_buying


Тут quantity_buying - имя поля в таблице, а sum_quantity_buying - алиас выражения (может быть любым именем, но не должен совпадать со словами из SQL-синтаксиса и именами других объектов). Именно по алиасу осуществляется доступ к полю подзапроса вне этого подзапроса.
...
Рейтинг: 0 / 0
приобретение- продажа=остаток на конец
    #39123371
ven1dy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftven1dy,

Тут quantity_buying - имя поля в таблице, а sum_quantity_buying - алиас выражения (может быть любым именем, но не должен совпадать со словами из SQL-синтаксиса и именами других объектов). Именно по алиасу осуществляется доступ к полю подзапроса вне этого подзапроса.

Ах вот ото что, спасибо, сделал.
Но теперь блин опять ошибка,
#1054 - Unknown column 't1.id_good' in 'on clause'
Уже 100500 ошибка, вот у жешь есть такое id_good в t1 алиасе

SELECT t1.id_good,t1.product_name
,t2.sum_quantity_buying,t2.s_summ_good_buying
,t3.sum_quantity_order,t3.s_summ_good_order
FROM
(
SELECT id_good,product_name FROM buying
UNION
SELECT id_good,product_name FROM selling
) t1
LEFT JOIN
(
SELECT id_good,product_name,SUM('quantity_buying') sum_quantity_buying,SUM('summ_good_buying') s_summ_good_buying
FROM buying
GROUP BY id_good,product_name
) t2
LEFT JOIN
(
SELECT id_good,product_name,SUM('quantity_order') sum_quantity_order ,SUM('summ_good_order') s_summ_good_order
FROM selling
GROUP BY id_good,product_name
) t3
on t1.id_good=t2.id_good
and t1.product_name=t2.product_name
on t1.id_good=t3.id_good
and t1.product_name=t3.product_name
...
Рейтинг: 0 / 0
приобретение- продажа=остаток на конец
    #39123416
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Господи, неужели так сложно ВНИМАТЕЛЬНО заменить одни литералы на другие, не ошибаясь... с этим даже "поиск и замена" в блокноте справится...
...
Рейтинг: 0 / 0
приобретение- продажа=остаток на конец
    #39123435
ven1dy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AkinaГосподи, неужели так сложно ВНИМАТЕЛЬНО заменить одни литералы на другие, не ошибаясь... с этим даже "поиск и замена" в блокноте справится...

Я заменил, я переписал ваш запрос, подставил свои значение и т.д.
Но все равно не работает.
...
Рейтинг: 0 / 0
приобретение- продажа=остаток на конец
    #39123451
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ven1dyЯ заменил, я переписал ваш запрос, подставил свои значение и т.д.
Значит, это не было сделано внимательно. Собственно, половина темы именно это и иллюстрирует.
Начните снова. Возьмите немодифицированный текст запроса в Блокнот и изменяйте его до требуемого состояния ТОЛЬКО через "Заменить всё...". Замен будет не так уж и много - нужно заменить литералы mark, model, purchase, sale, amount и summ.
...
Рейтинг: 0 / 0
приобретение- продажа=остаток на конец
    #39123481
ven1dy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akinaven1dyЯ заменил, я переписал ваш запрос, подставил свои значение и т.д.
Значит, это не было сделано внимательно. Собственно, половина темы именно это и иллюстрирует.
Начните снова. Возьмите немодифицированный текст запроса в Блокнот и изменяйте его до требуемого состояния ТОЛЬКО через "Заменить всё...". Замен будет не так уж и много - нужно заменить литералы mark, model, purchase, sale, amount и summ.

Заново сделал запрос по вашему образцу.
Изменил лишь,id,mark,purchase,sale, amount и summ.
Только для проверки работы кода удалил литерал model
Все равно выскакивает данная ошибка:
#1054 - Unknown column 't1.id_good' in 'on clause'

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
select t1.id_good,t1.product_name,t2.p_cnt,t2.p_sum,t3.s_cnt,t3.s_sum
from
(
  select id_good,product_name from buying
  union
  select id_good,product_name from selling
) t1
left join
(
  select id_good,product_name,sum('quantity_buying') p_cnt,sum('summ_good_buying') p_sum
  from buying
  group by id_good,product_name
) t2
left join
(
  select id_good,product_name,sum('quantity_order') s_cnt,sum('summ_good_order') s_sum
  from selling
  group by id_good,product_name
) t3
on t1.id_good=t2.id_good and t1.product_name=t2.product_name
on t1.id_good=t3.id_good and t1.product_name=t3.product_name
...
Рейтинг: 0 / 0
приобретение- продажа=остаток на конец
    #39123487
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А за каким хреном потребовалось суммировать строковые литералы?
...
Рейтинг: 0 / 0
приобретение- продажа=остаток на конец
    #39123506
ven1dy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AkinaА за каким хреном потребовалось суммировать строковые литералы?

Как это? Мне же надо вычислять, как на второй картинке я присылал
...
Рейтинг: 0 / 0
приобретение- продажа=остаток на конец
    #39123577
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну так суммируй значения полей записи, а не строковый литерал, да... кавычки у тебя не те, что, кстати, подсветка синтаксиса прекрасно показывает.
Что же до
ven1dy#1054 - Unknown column 't1.id_good' in 'on clause'
то допускаю, что сервер желает увидеть алиасы полей объединяющего запроса. Ну дай их, хуже не будет:
Код: sql
1.
2.
3.
4.
5.
(
  select id_good id_good,product_name product_name from buying
  union
  select id_good,product_name from selling
) t1
...
Рейтинг: 0 / 0
приобретение- продажа=остаток на конец
    #39123585
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinaЧто же до
ven1dy#1054 - Unknown column 't1.id_good' in 'on clause'
то допускаю, что сервер желает увидеть алиасы полей объединяющего запроса. Ну дай их, хуже не будет:К алиасам вроде претензий не должно быть.

А вот можно ли писать несколько раз ON после всех JOIN-ов?
Насколько я понимаю, каждый ON должен идти после своего JOIN-а.
...
Рейтинг: 0 / 0
приобретение- продажа=остаток на конец
    #39123616
ven1dy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft,

Спасибо, ошибка исчезла.
Теперь выдает без ошибок.
Только столбцы покупок не суммирует
...
Рейтинг: 0 / 0
приобретение- продажа=остаток на конец
    #39123620
ven1dy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

То есть суммировать мне надо в самом верхнем select? или я чёт не понял.

Просто на данный момент таблица все выводит без ошибок и суммирует из таблицы buying,а вот из selling, не суммирует=(
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
SELECT t1.id_good,t1.product_name
    ,t2.sum_quantity_buying,t2.s_summ_good_buying 
    ,t3.sum_quantity_order,t3.s_summ_good_order
FROM
(
  select id_good id_good,product_name product_name from buying
  union
  select id_good id_good,product_name product_name from selling
) t1
LEFT JOIN
(
  SELECT id_good,product_name,SUM(`quantity_buying`) sum_quantity_buying,SUM(`summ_good_buying`) s_summ_good_buying
  FROM buying
  GROUP BY id_good,product_name
) t2
on t1.id_good=t2.id_good
and t1.product_name=t2.product_name
LEFT JOIN
(
  SELECT id_good,product_name,SUM(`quantity_order`) sum_quantity_order ,SUM(`summ_good_order`) s_summ_good_order
  FROM selling
  GROUP BY id_good,product_name
) t3
on t1.id_good=t3.id_good
and t1.product_name=t3.product_name
...
Рейтинг: 0 / 0
приобретение- продажа=остаток на конец
    #39123624
ven1dy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ven1dy,

Хотя, нет.
Все вроде отлично работает.
Ура ребята, спасибо большое, хух.

Есть тут лайки , чтобы вам поставить?
Знаю что достал вас)
...
Рейтинг: 0 / 0
приобретение- продажа=остаток на конец
    #39123641
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftможно ли писать несколько раз ON после всех JOIN-ов?
Да, синтаксис вполне легитимный. В принципе в смысле результата ON полностью эквивалентен AND. Единственное предъявляемое требование - это любая таблица, упомянутая в ON, должна выше по тексту быть включена во WHERE. А так - даже количество JOIN и ON не обязаны совпадать...
...
Рейтинг: 0 / 0
36 сообщений из 36, показаны все 2 страниц
Форумы / MySQL [игнор отключен] [закрыт для гостей] / приобретение- продажа=остаток на конец
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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