Форум программистов, компьютерный форум, киберфорум
MySQL
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 27.02.2023
Сообщений: 25
1

Расчитать стоимость блюда с учетом количества этого блюда в штуках

29.05.2024, 13:17. Показов 612. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть такой запрос вычисления себестоимости блюда в ресторане:

MySQL
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
-- Вычисление себестоимости блюд, входящих в комбо
SELECT SUM(totalCostPrice)
    FROM (SELECT SUM(costPriceAllIngredient) AS totalCostPrice
          FROM (SELECT SUM(IF(inv.gross <> 0, (inv.price_for_all / inv.gross) * II.weight, 0)) AS costPriceAllIngredient
                FROM products_combos pc,
                     invoice inv,
                     posinfo pi,
                     ingredient_info II,
                     ingredient I,
                     stock_item SI,
                     warehouses W
                WHERE pc.combos_id = :comboId
                  AND II.products_id = pc.products_id
                  AND I.id = II.ingredient_id
                  AND SI.ingredient_id = I.id
                  AND pi.client_legal_informations_id = 12
                  AND W.pos_info_id = pi.id
                  AND inv.stock_item_id = SI.id
                  AND inv.id = (SELECT inv_sub.id
                                FROM invoice inv_sub,
                                     stock_item si_sub
                                WHERE inv_sub.id in (inv.id)
                                  AND inv_sub.warehouses_id = W.id
                                  AND inv_sub.archive = FALSE
                                  AND inv_sub.expense = FALSE
                                  AND inv_sub.stock_item_id = si_sub.id
                                GROUP BY inv_sub.id
                                ORDER BY inv_sub.id
                                LIMIT 1)
                GROUP BY inv.name,
                         inv.price_for_all,
                         inv.price_for_one,
                         inv.gross,
                         inv.id
                ORDER BY inv.id) subquery_1
          UNION ALL
          SELECT SUM(costPriceBlank) AS costPriceBlank
          FROM (SELECT SUM(IF(inv.gross <> 0, (inv.price_for_all / inv.gross) * II.weight, 0)) AS costPriceBlank
                FROM products_combos pc,
                     invoice inv,
                     posinfo pi,
                     ingredient_info II,
                     ingredient I,
                     stock_item SI,
                     warehouses W,
                     blank B,
                     blank_info BI
                WHERE pc.combos_id = :comboId
                  AND BI.products_id = pc.products_id
                  AND B.id = BI.blank_id
                  AND II.blank_id = B.id
                  AND I.id = II.ingredient_id
                  AND SI.ingredient_id = I.id
                  AND pi.client_legal_informations_id = 12
                  AND W.pos_info_id = pi.id
                  AND inv.stock_item_id = SI.id
                  AND inv.id = (SELECT inv_sub.id
                                FROM invoice inv_sub,
                                     stock_item si_sub
                                WHERE inv_sub.id in (inv.id)
                                  AND inv_sub.warehouses_id = W.id
                                  AND inv_sub.archive = FALSE
                                  AND inv_sub.expense = FALSE
                                  AND inv_sub.stock_item_id = si_sub.id
                                GROUP BY inv_sub.id
                                ORDER BY inv_sub.id
                                LIMIT 1)
                GROUP BY inv.name,
                         inv.price_for_all,
                         inv.price_for_one,
                         inv.gross,
                         inv.id
                ORDER BY inv.id) subquery_2
          UNION ALL
          SELECT SUM(costPriceBlankInB) AS costPriceBlankInB
          FROM (select ((SUM(if(inv.gross <> 0, (inv.price_for_all / inv.gross) * II.weight, 0)) / B.weight) *
                        BI.weight) AS costPriceBlankInB
                from products_combos pc,
                     blank_info BI,
                     blank B,
                     invoice inv,
                     posinfo pi,
                     ingredient_info II,
                     ingredient I,
                     stock_item SI,
                     warehouses W
                where BI.products_id = pc.products_id
                  and BI.parent_id in (SELECT bi_sub.blank_id FROM blank_info bi_sub, products_combos pc_sub WHERE bi_sub.products_id = pc_sub.products_id and pc_sub.combos_id = :comboId)
                  and B.id in (BI.blank_id)
                  AND II.blank_id = B.id
                  AND I.id = II.ingredient_id
                  AND SI.ingredient_id = I.id
                  AND pi.client_legal_informations_id = 12
                  AND W.pos_info_id = pi.id
                  AND inv.stock_item_id = SI.id
                  AND inv.id = (SELECT inv_sub.id
                                FROM invoice inv_sub,
                                     stock_item si_sub
                                WHERE inv_sub.id in (inv.id)
                                  AND inv_sub.warehouses_id = W.id
                                  AND inv_sub.archive = FALSE
                                  AND inv_sub.expense = FALSE
                                  AND inv_sub.stock_item_id = si_sub.id
                                GROUP BY inv_sub.id
                                ORDER BY inv_sub.id
                                LIMIT 1)
                GROUP BY inv.id, B.weight, BI.weight) subquery_3) subquery_all;
Блюдо делается из ингредиентов, заготовки и заготовки для заготовки, поэтому в данном запросе отдельно считается себестоимость ингредиентов, заготовки, заготовки для заготовки и все это суммируется.

Кроме этого есть таблица count, в которой указано, с какой кратностью (в каком количестве) блюдо входит в комбо, сколько штук такого блюда в комбо. Поле count.id это айди блюда, поле count.count это количество данного блюда в комбо (в штуках).

Как допилить этот запрос так, чтобы по id комбо находились все блюда в этом комбо и по запросу выше считалась себестоимость всех входящих в комбо блюд с учетом их количества? Ломаю голову и не могу придумать решение.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.05.2024, 13:17
Ответы с готовыми решениями:

Найти блюда, у которых калорийности отличается от блюда c минимальной калорийностью на 20
Дан список блюд с указанием их калорийности. Найти блюда, у которых калорийности отличается от...

Сделать перенос блюда двойным кликом по блюду в stringgridе и удаление блюда из заказа
Здравствуйте, у меня есть программа &quot;Меню ресторана&quot;, которая содержит: Меню и Заказ. Из меню в...

Описать структуру Menu, содержащую поля: название блюда, вес блюда, количество калорий, цена
Описать структуру Menu, содержащую следующие поля: название блюда, вес блюда, количество калорий,...

составьте программу пожалуйста 17. Опишите запись с именем типа Recept, содержащую информацию о рецепте приготовления блюда:  Название блюда (тип str
17. Опишите запись с именем типа Recept, содержащую информацию о рецепте приготовления блюда:...

9
178 / 28 / 7
Регистрация: 14.04.2019
Сообщений: 216
29.05.2024, 22:05 2
Когда я вижу такие запросы, мне сразу становится жалко человека, которому понадобится
его изменить. Даже если это будет автор и пройдет только месяц
0
0 / 0 / 0
Регистрация: 27.02.2023
Сообщений: 25
30.05.2024, 10:09  [ТС] 3
Тогда как можно отрефакторить этот запрос, чтобы его было проще поддерживать?
У нас сложные задачи, для которых приходится писать сложные запросы
0
Модератор
Эксперт MS Access
 Аватар для shanemac51
12108 / 4968 / 791
Регистрация: 07.08.2010
Сообщений: 14,621
Записей в блоге: 4
30.05.2024, 10:43 4
Цитата Сообщение от AngelicQuasar Посмотреть сообщение
Блюдо делается из ингредиентов, заготовки и заготовки для заготовки
запрос конечно ужасный, если не сказать - жуткий

я бы видимо исходила из схемы состав изделия
-куда
-что
-тип что
- количество(входимость в вышестоящую сборку)
0
 Аватар для Аватар
3858 / 1385 / 486
Регистрация: 31.05.2012
Сообщений: 4,856
30.05.2024, 10:46 5
ну сложный зхапрос, с кучей таблиц и связей, попробуй разберись не имея представления где что и с чем его едят. а ты про какие-то комбо, которых нет вообще в терминах sql, да и об субд ни слова, хотя вижу limit, значит точно не ms sql )
0
0 / 0 / 0
Регистрация: 27.02.2023
Сообщений: 25
30.05.2024, 11:58  [ТС] 6
Запрос жуткий, да. У нас такая схема базы, менять ее никто не будет. Приходится рабоать с этим. Никто не говорил, что будет просто)))
0
Модератор
 Аватар для D1973
9655 / 6261 / 2429
Регистрация: 21.01.2014
Сообщений: 26,694
Записей в блоге: 3
30.05.2024, 12:36 7
Цитата Сообщение от AngelicQuasar Посмотреть сообщение
У нас такая схема базы, менять ее никто не будет.
Бывает. Но тогда что Вы от нас-то хотите услышать? Все что могу лично - это посочувствовать, остальное - только при наличии базы. Какая СУБД, кстати?
0
0 / 0 / 0
Регистрация: 27.02.2023
Сообщений: 25
30.05.2024, 12:50  [ТС] 8
MySQL 8
0
Модератор
Эксперт MS Access
 Аватар для shanemac51
12108 / 4968 / 791
Регистрация: 07.08.2010
Сообщений: 14,621
Записей в блоге: 4
30.05.2024, 16:09 9
Цитата Сообщение от D1973 Посмотреть сообщение
Все что могу лично - это посочувствовать, остальное - только при наличии базы
или как минимум
- структуры таблиц, желательно с несколькими записями
- схемы таблиц
0
399 / 234 / 87
Регистрация: 28.04.2022
Сообщений: 1,177
31.05.2024, 10:04 10
Цитата Сообщение от AngelicQuasar Посмотреть сообщение
У нас такая схема базы, менять ее никто не будет.
Наш дом без окон и дверей. Приходится залезать в него через дымовую трубу. Это неудобно. Как сделать, чтобы было удобно?
Но никто дом перестраивать не будет! И точка!
0
31.05.2024, 10:04
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.05.2024, 10:04
Помогаю со студенческими работами здесь

Определить стоимость самого дешевого блюда в ресторане
Помогите с задачей на записи: Составить программу, выводящую на экран меню ресторана &quot;Дракон&quot;...

Программа некорректно считает максимальную и минимальную стоимость блюда
Пожалуйста, помогите поправить программу. Программа не корректно считает максимальную и минимальную...

Создать мини проект, который будет рассчитывать стоимость одной порции блюда
Створити міні проект, який буде розраховувати вартість однієї порції страви. Передбачити внесення...

Записи/Структуры. В столовой предлагается комплексных обедов, состоящих из Q блюд. Известна стоимость и калорийность каждого блюда
помогите написать проги по решению этих двух задач)) данные считываются из текстого файла 2)В...

Составить программу, выводящую на экран меню детского кафе (наименование блюда, вес, цена). Определить стоимость заказан
Помогите пожалуйста: Во всех задачах записи (не менее 5) вводятся с клавиатуры, записываются в файл...

В столовой предлагается N комплексных обедов, состоящих из Q блюд. Известна стоимость и калорийность каждого блюда. Сколько стоит самый дешевый и самы
Тема: &quot;Структуры&quot;. В столовой предлагается N комплексных обедов, состоящих из Q блюд. Известна...

Определить стоимость самого дешевого блюда в меню ресторана "Дракон"
Помогите с задачей: Составить программу, выводящую на экран меню ресторана &quot;Дракон&quot; (наименование...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
[Golang] 121. Best Time to Buy and Sell Stock
alhaos 28.01.2025
В этой задаче мы получаем слайс целых чисел, которые означают цену акции в разные моменты времени, и должны вернуть максимально возможную прибыль от купли продажи акции. / / . . .
Проектирование и моделирование
hw_wired 28.01.2025
Введение в моделирование Моделирование представляет собой один из фундаментальных методов научного познания, который позволяет изучать объекты и явления через создание их упрощенных аналогов. В. . .
Алгоритмы и исполнители
hw_wired 28.01.2025
Введение в алгоритмы В современном мире информационных технологий алгоритмы играют основополагающую роль в решении различных задач и автоматизации процессов. Алгоритм представляет собой точную. . .
Хранение информации
hw_wired 28.01.2025
Введение: Роль систем хранения информации в современном мире В современную эпоху цифровых технологий эффективное хранение информации становится одним из ключевых факторов успешного развития любой. . .
Обработка числовой информации
hw_wired 28.01.2025
Введение в обработку числовой информации В современном мире обработка числовой информации стала неотъемлемой частью как профессиональной деятельности, так и повседневной жизни. Электронные таблицы. . .
Мультимедиа
hw_wired 28.01.2025
Введение в мультимедийные технологии В современном мире мультимедийные технологии стали неотъемлемой частью нашей жизни, проникнув во все сферы человеческой деятельности. Термин "мультимедиа". . .
Обработка текстовой информации
hw_wired 28.01.2025
Введение в обработку текстовой информации В современном мире обработка текстовой информации играет фундаментальную роль в различных сферах человеческой деятельности. Текстовые редакторы стали. . .
Обработка графической информации
hw_wired 28.01.2025
Введение в компьютерную графику Компьютерная графика стала неотъемлемой частью современного цифрового мира, пройдя впечатляющий путь развития от простейших черно-белых изображений до сложных. . .
Python в Алгоритмике: Решение задач
hw_wired 28.01.2025
Введение в Python и Алгоритмику В современном мире программирование стало неотъемлемой частью образования и профессионального развития. Python зарекомендовал себя как один из самых популярных и. . .
Компьютер как универсальное устройство для работы с информацией
hw_wired 28.01.2025
Введение в устройство компьютера Компьютер представляет собой универсальное электронное устройство, предназначенное для автоматической обработки информации. В современном мире компьютер стал. . .
Информация и информационные процессы
hw_wired 28.01.2025
Понятие информации и ее виды В современном мире информация является одним из фундаментальных понятий, пронизывающих все сферы человеческой деятельности. Под информацией понимают любые сведения об. . .
Алгоритмика
hw_wired 28.01.2025
Введение: Основы алгоритмики и её роль в информатике В современном мире программирование и алгоритмическое мышление стали неотъемлемой частью образования и профессиональной деятельности. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru