У меня есть таблица с такими отношениями между собой, как я.
TablaA
{
IDTablaA bigint;
Data varchar(200);
}
Relations
{
ID bigint;
IDRelated bigint;
}
Я хочу знать, какой элемент из Таблицы A связан с другими элементами Таблицы A. Поэтому сначала, независимо от того, каким образом, независимо от того, установил ли я в ID один идентификатор, а в IDRelated я установил другой или наоборот.
Я имею в виду, неважно, вставлю ли я (2,3) или (3,2), потому что в обоих случаях я буду знать, какие элементы связаны.
Так что запрос будет что-то вроде этого:
select * from TableAas t where
t.IDtableA IN(select r.IDRelated from Relations as r where r.ID = 2)
or
t.IDtableA IN(select r.ID from Relations as r.IDRelated = 2)
Так что я думаю, что я мог бы добавить две строки в среднюю таблицу (2,3) и (3,2). Я дублирую информацию, но если я хочу получить все элементы, связанные с 2, мне нужно искать только ID = 2, а не ID = 2 или IDRelated = 2;
Так что запрос будет примерно таким:
select * from TableAas t where
t.IDtableA IN(select r.IDRelated from Relations as r where r.ID = 2)
Я использую только подзапрос, и если мне нужно установить больше условий в связанных элементах, запрос может быть более сложным. Проблема в том, что я буду дублировать строки в таблице отношений.
Так что я хотел бы знать, какой вариант лучше использовать: дублировать строки, чтобы иметь более простой запрос, или не дублировать их, но у меня будет более сложный запрос.
Спасибо.