2012-10-14 31 views
1

我有兩個表論壇論壇活動。 ForumCateoryId是映射字段。如何從每個主鍵表記錄中找到foriegn密鑰表中的最高記錄?

Forum表中包含的字段,如:

ForumId, Title,Description and ForumCategoryId 

ForumCategory表包含 ForumCategoryId,ForumCategory

我需要從ForumCategory頂部1標題和說明從論壇顯示的所有記錄。在子查詢

select * 
from ForumCategory FC 
join (select top 1 ForumId, Title,Description, ForumCategoryId 
     from Forum 
     where F.ForumCategoryId = FC.ForumCategoryId 
    ) F 

+0

「前1標題和說明論壇」將有ForumCategory相同ForumCategoryId? – aliassce

+0

是的。ForumCategory和Forum之間有一對多關係。 – Krishnan

回答

0

嘗試TI使用top 1嘗試在子查詢中使用aggregate functionmin爲例):

select * 
from ForumCategory FC 
join Forum F on F.ForumCategoryId = FC.ForumCategoryId 
      and F.ForumId = (select min(F2.ForumId) 
           from Forum F2 
           where F2.ForumCategoryId = F.ForumCategoryId   
          ) 
0

我假設你需要最後論壇每個論壇類別,所以我通過ForumId降序來訂購論壇。

select 
    FC.ForumCategoryId, 
    FC.ForumCategory, 
    F.Title as ForumTitle, 
    F.Description as ForumDescription 
from ForumCategory as FC 
    outer apply 
    (
     select top 1 TT.* 
     from Forum as TT 
     where TT.ForumCategoryId = FC.ForumCategoryId 
     order by TT.ForumId desc 
    ) as F 

你也可以嘗試這樣的事情

select top 1 with ties 
    FC.ForumCategoryId, 
    FC.ForumCategory, 
    F.Title as ForumTitle, 
    F.Description as ForumDescription 
from @ForumCategory as FC 
    left outer join @Forum as F on F.ForumCategoryId = FC.ForumCategoryId 
order by 
    row_number() over (partition by FC.ForumCategoryId order by F.ForumId desc) 
相關問題