2010-07-16 9 views
5

У меня есть следующий код:INNER JOIN отчетливым ID

FROM CTE_Order cte 
    INNER JOIN tblOrders o 
     ON cte.OrderId = o.Id 
    INNER JOIN tblOrderUnits ou 
     ON o.id = ou.OrderId       
    INNER JOIN tblOrderServiceUnits osu 
     ON ou.VMSUnitID = osu.UnitId 

Когда я подключаюсь к НУ я получаю 2 из тех же единиц идентификаторов. Это заставляет Inner Join tblOrderServiceUnits возвращать 4 строки с 2 дубликатами. Мне нужно, чтобы он возвращал только две строки. Как использовать отдельный для Inner Join только отдельный файл ou.id?

Извините за неправильное объяснение, но в основном я jsut, пытаясь понять, как работает INNER JOIN с отдельным подзапросом. Если кто-то может дать мне пример того, что я мог бы понять это оттуда.

ответ

12
INNER JOIN (SELECT DISTINCT * FROM X) Alias 
ON Alias.ID = Primary.ID 

Для примера:

INNER JOIN (SELECT DISTINCT VMSUnitID, OrderId FROM tblOrderUnits) ou 
ON o.id = ou.OrderId 
+0

Так что если мне нужно выбрать отличный VMSUnitID в OrderUnit присоединиться как бы я это сделать? – user380432

+0

Обновлено сообщение для уточнения. –