Мне трудно найти способ найти решение вышеупомянутого вопроса.Вот подробности.
Допустим, у нас есть таблица X, которая содержит различные продукты, и каждый продукт имеет уникальный целочисленный идентификатор и уникальный код .У нас также есть Таблица Y, которая содержит различные варианты каждого продукта в Таблице X, которые имеют небольшие различия в названии продукта, длине, ширине и т. Д. Поэтому существует отношение один-много , определенное между Таблица X и Таблица Y .
Интерфейс отображает все эти варианты продукта и позволяет выбирать их из списка и экспортировать все выбранные сведения о продукте в PDF-файл.Однако существует странный способ их выбора, при котором, если пользователь нажимает на продукт, тогда выбираются все варианты продукта с одинаковым уникальным кодом , если они находятся в одном списке.То есть, в основном, когда выбирается вариант продукта, выбирается полный продукт вместе со всеми его вариантами в списке.Однако, если пользователь хочет, он может отменить выбор каждого варианта продукта индивидуально по своему усмотрению.
Таблица Z содержит журнал всех экспортированных идентификаторов вариантов продукта.Следовательно, это выглядит примерно так
id |exported_at |exported_by |product_variant_ids
1 |Некоторое времяКакой-то пользователь |{1, 2, 3, 4}
2 |Некоторое времяКакой-то пользователь |{3, 4}
3 |Некоторое времяКакой-то пользователь |{6, 8, 9}
4 |Некоторое времяКакой-то пользователь |{1, 6, 7}
5 |Некоторое времяКакой-то пользователь |{3, 5, 7}
и т. Д. *
Здесь вы заметите, что:
1. В каждой строке идентификатор варианта продукта может появляться в массиве только один раз
2. Однако идентификатор варианта продукта может отображаться в разных строках
Я хочу рассчитать для каждого уникального идентификатора варианта продукта , присутствующего во всех строках, суммучастоты их появления в каждой строке.
Так, например, в приведенной выше фиктивной таблице идентификатор варианта продукта 1 появляется ровно дважды во всей таблице, в строке 1 и строке 4Точно так же идентификатор варианта продукта 3 , в строках 1, 2 и 5.
Я попытался вычислить это наивно, что-то вроде
Наивный алгоритм в словах:
Из набора всех уникальных идентификаторов, присутствующих в таблице,
для каждой строки проверьте, присутствует ли каждый из уникальных идентификаторов в наборе в каждой отдельной строке
и увеличьте счетчик.каждый раз, когда это происходит.
Я не знаю, как написать подзапрос для него и курицаce, я не смог опробовать какие-либо запросы на консоли postgres.
Это приводит к очень медленной работе после 15-20 журналов при использовании ORM, подобного SQLAlchemy.
Может кто-нибудь помочьмне в правильном направлении, что может быть более эффективным решением?