У меня есть запрос
SELECT *
FROM table1
WHERE
documentId in
(
--select items from a second table where a third column happens to be null
select documentId from table2 t2 inner join table1 t1
on t1.documentId = t2.documentId and t1.itemId = t2.ItemId
WHERE t1.someOtherColumn is null
)
and itemId in
(
--similar query as above, just selecting itemId now
select itemId from table2 t2 inner join table1 t1
on t1.documentId = t2.documentId and t1.itemId = t2.ItemId
WHERE t1.someOtherColumn is null
)
order by 1
Учитывая, что table1 имеет составной PK = documentId + itemId, достаточно ли этого для выбора только тех значений из таблицы1, которые являются уникальными? Я боюсь, что может возникнуть ситуация, когда documentId существует и itemId существует, но, поскольку они не рассматриваются вместе, могут быть сделаны неправильные выборы.
Например,
Предположим, что существует значение
documentId = 1 и itemId = 1.
Предположим, что нет составного ключа
documentId = 1 и itemId = 1.
Я не хочу составной ключ
[documentId = 1 и itemId = 3]
будет включено.
я тоже не хочу составной ключ
[documentId = 2 и itemId = 1]
будет включено.
Если позже был добавлен составной ключ (его сейчас нет)
[documentId = 1 и itemId = 1]
тогда оно должно быть включено.