Условие:Postgresql. выберите значение SUM из массивов
Есть две таблицы с массивами.
Примечание food.integer и price.food_id указанный массив.
CREATE TABLE food (
id integer[] NOT NULL,
name character varying(255),
);
INSERT INTO food VALUES ('{1}', 'Apple');
INSERT INTO food VALUES ('{1,1}', 'Orange');
INSERT INTO food VALUES ('{1,2}', 'banana');
и
CREATE TABLE price (
id bigint NOT NULL,
food_id integer[],
value double precision DEFAULT 0
);
INSERT INTO price VALUES (44, '{1}', 500);
INSERT INTO price VALUES (55, '{1,1}', 100);
INSERT INTO price VALUES (66, '{1,2}', 200);
нужно получить значение суммы всех продуктов из таблицы продуктов питания. Пожалуйста, помогите сделать запрос sql.
ОТВЕТ: {1} - Apple - 800 (500 + 100 + 200)
Если вы нормализуете свою модель данных, это станет очень простым запросом. Хранение ссылок на внешние ключи в массиве - не очень хорошая идея. Вы должны действительно рассмотреть возможность фиксации вашей модели данных. –
Да, но я не эту базу разработал. Если вы знаете запрос к этой базе данных, напишите или скажите мне, где искать. – Theb
Почему я знаю, что вы скажете нам, что вы этого не сделали? Люди, создающие неправильные модели данных, по-видимому, никогда не должны их использовать. Я не понимаю массив идентификаторов в таблице «food». Означает ли это, что «банан» имеет два разных идентификатора? И почему у Orange есть те же идентификаторы, что и Apple? И что это значит, что у «оранжевого» и «банана» есть * два * ids. Каков первичный ключ таблицы «еда»? Модель и данные не имеют для меня никакого смысла. –