У меня есть отношения таблицы следующим образом:Удаление дубликатов из SQL запроса в один ко многим отношений
Таблица 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
На этот раз я получу несколько записей, если у меня есть ID из таблицы 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
Проблема теперь, запрос возвращает только один результат. Но что, если есть два продукта, которые относятся к одной категории?
P.S. Я забыл упомянуть, что фактическая DB схемы для этого запроса:
Продукция -> ProductsCategories < - Категории
Так позволяет сказать, что 2 продукты находятся под две категории, мне нужно, чтобы оба продукта, но без дубликатов. Путь Коппинджо возвращает только 1 результат ...
Вы получаете несколько записей, так как есть несколько записей, которые соответствуют вашему критерию. Как sql serevr знает, какие значения получить из таблицы2? вам необходимо предоставить условие для фильтрации строк в таблице2, имеющего тот же идентификатор, что и t1.id. –
Как сказал Зохар Пелед, вам нужно рассказать, какие строки в таблице 2 вы хотите увидеть. Например, вы хотите увидеть первую строку в таблице 2? Или самое большое значение? Вам необходимо предоставить условие для фильтрации строк или сделать группу или что-то вроде этого. –