У меня есть табличные отношения следующим образом:
Таблица 1 -> Таблица 2 (отношение один ко многим в БД)
Если я сделаю следующий запрос к таблице 1:
select *
from table1 as t1
where t1.id = 1
Я получу только одну запись для конкретной записи из этой таблицы, но если я присоединюсь к таблице 2 следующим образом:
select *
from table1 as t1
join table2 as t2
on t1.id = t2.id
where t1.id=1
На этот раз я получу несколько записей, если у меня есть идентификатор из таблицы 1, вставленный несколько раз в таблицу 2. Вопрос в том, есть ли способ показать только 1 запись после выполнения этого соединения в запросе, в отношениях один ко многим??
Может ли кто-нибудь помочь мне с этим?? Спасибо!
Я использовал способ koppinjo, и теперь запрос выглядит следующим образом:
SELECT *
FROM ( SELECT ROW_NUMBER() OVER ( PARTITION BY PC.SubCategoryID
ORDER BY PC.[SubCategoryID] ) AS [Row]
,sc.*
,pc.MeasurementQuantity
,pc.Price
,pc.ProductCategoryID
,pc.ProductID
,p.Dimensions
,p.FileName
,p.ProductDescription
,p.ProductName
,mu.Unit
FROM SubCategory AS sc
JOIN ProductsCategories AS pc ON sc.SubCategoryID = pc.SubCategoryID
JOIN Products AS p ON p.ProductID = pc.ProductID
JOIN MeasurementUnits AS mu
ON mu.MeasurementUnitID = p.MeasurementUnitID
WHERE pc.SubCategoryID = 1
) AS t
WHERE t.[Row] = 1
Проблема в том, что запрос возвращает только 1 результат. Но что, если есть два продукта, которые относятся к одной и той же категории??
P.S. Я забыл упомянуть, что фактическая схема БД для этого запроса:
Товары -> ТоварыКатегории ‹- Категории
Итак, допустим, что 2 продукта находятся в двух категориях, мне нужно получить оба продукта, но без дубликатов. Способ Коппиньо возвращает только 1 результат...