создать master_id для идентификации дупов в postgresql - PullRequest
0 голосов
/ 01 марта 2019

По бизнес-причинам у меня есть таблица с информацией об изображениях, и их можно дублировать, но мы не можем удалить дубликаты.Каждое изображение имеет image_id, поэтому мы можем иметь одно и то же изображение с более чем 1 image_id (совсем нехорошо).

Для других задач мне нужно избегать выбора одного и того же изображения для отображения, поэтому я бы хотелсоздайте новый столбец для определения «master_id», например min image_id того же изображения.

Прямо сейчас я могу запросить / определить, какие из них являются дуплексами, присоединяясь к таблице вместе с собой на полях с изображениеминформация ->

Table of dupes.

Но, например, строка 4 не должна появляться, потому что строки 2 и 3 уже ее создают, и повлияет на обновление таблицы в столбце master_id.

Есть идеи, как легко создать этот столбец master_id?

Окончательный вывод строк 2,3 и 4 должен выглядеть примерно так:

image_id  | master_id
11397     | NULL
12226     | 11397
12232     | 11397

1 Ответ

0 голосов
/ 02 марта 2019

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

Например:

В гипотетической кенарии создайте таблицу DocumentVersion, и в этой таблице вы сгруппируетеimages:

CREATE TABLE document_version (int id, varchar description)

На следующем шаге создайте ImageDocumentVersion

CREATE TABLE image_document_version (int id, fk_document_version)

. В вашем запросе для выбора изображений вы задаете версию документа.И когда вам нужно выбрать самое последнее изображение, укажите версию документа, выбрав максимальный идентификатор изображения

SELECT max(id) FROM image_document_version WHERE fk_document_version = [[id of document]]

Я надеюсь помочь.Reggards.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...