Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 1
Регистрация: 25.12.2016
Сообщений: 105
1

Разложить данные одной таблицы по данным другой таблицы, не связанных напрямую

03.11.2019, 12:45. Просмотров 895. Ответов 2


Доброго времени суток.

Задача: имеется БД со следующей структурой
Разложить данные одной таблицы по данным другой таблицы, не связанных напрямую


Необходимо разложить каждый прием пищи(таблица Meals) по продуктам(таблица Products) при этом указав общее кол-во продукта входящего в данный прием пищи, его суммарную стоимость и калорийность.

Как я пытался решить задачу: поскольку эта информация будет часто требоваться, я решил создать представление
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
"CREATE VIEW MEAL_TO_PRODUCTS_STATISTICS " +
                    "(meal_id, product_id, amount_product, total_price, total_calories) AS " +
                    "SELECT " +
                    "MEAL_TO_DISHES_COMPOSITION.meal_id, " +
                    "DISH_TO_PRODUCTS_COMPOSITION.product_id, " +
                    "SUM(MEAL_TO_DISHES_COMPOSITION.amount_dish * DISH_TO_PRODUCTS_COMPOSITION.amount_product), " +
                    "SUM(MEAL_TO_DISHES_COMPOSITION.amount_dish * DISH_TO_PRODUCTS_COMPOSITION.amount_product * PRODUCTS.price), " +
                    "SUM(MEAL_TO_DISHES_COMPOSITION.amount_dish * DISH_TO_PRODUCTS_COMPOSITION.amount_product * PRODUCTS.calories) " +
                    "FROM " +
                    "MEAL_TO_DISHES_COMPOSITION, DISH_TO_PRODUCTS_COMPOSITION, PRODUCTS " +
                    "WHERE MEAL_TO_DISHES_COMPOSITION.dish_id = DISH_TO_PRODUCTS_COMPOSITION.dish_id AND " +
                    "DISH_TO_PRODUCTS_COMPOSITION.product_id = PRODUCTS.id " +
                    "GROUP BY MEAL_TO_DISHES_COMPOSITION.meal_id, DISH_TO_PRODUCTS_COMPOSITION.product_id;"
Вроде работает, но я новичок в sql и подозреваю что что-то не доглядел. Поэтому хочу услышать мнение более опытных коллег.

Вопрос: Есть ли ошибки в данном представлении? Если есть - то какие? Можно ли оптимизировать решение?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.11.2019, 12:45
Ответы с готовыми решениями:

Вывести данные с одной таблицы, отсортировав её по данным из другой
Имеются 2 таблицы: ---REGIONS--- id_country INT id_region INT id_city INT ---CITY---...

Поиск из одной таблицы по данным другой таблицы
Всем привет. Есть таблица студенты и в ней есть id_stud есть вторая таблица работы студентов, в...

Данные из таблицы равные данным другой таблицы
Добрейший вечерочек! Нужно из таблицы pc вывести данные, где id = $idpc (idpc находится в таблице...

Сделать выборку из одной таблицы по данным другой
есть такое задание. Две таблицы Customer 1.ID 2.Name 3.Adress и Orders

__________________
Помогаю в написании курсовых работ и дипломов здесь.
2
3568 / 3040 / 819
Регистрация: 29.08.2013
Сообщений: 20,287
Записей в блоге: 2
03.11.2019, 14:30 2
перепишите, используя JOIN

Цитата Сообщение от Bakuard Посмотреть сообщение
Можно ли оптимизировать решение?
оптимизировать по скорости или по коду?
0
0 / 0 / 1
Регистрация: 25.12.2016
Сообщений: 105
03.11.2019, 15:43  [ТС] 3
qwertehok, по коду.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.11.2019, 15:43

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь или здесь.

Как из одной таблицы вытащить данные одной колонки и проставить в другой таблице в oracle?
Мой скрипт везде проставляет одно и то же: update import_data set iin=( select e.iin from...

Вывод данных из таблицы по данным из другой таблицы
Здравствуйте Использую БД-Access+ADO Имеется БД с несколькими...

Удаляются данные с одной и с другой таблицы
Есть 3 таблицы: Фильмы, Режиссеры, Страны. В таблице Фильмы есть поля IDРежиссер, IDСтрана из...

Заполнение таблицы по данным из другой таблицы
Добрый день! Помогите пожалуйста написать формулу для заполнение таблицы. Необходимо из таблице...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.