2013-11-22 81 views
0
[Links] 
LinkID, Link 
1,http:/link1 
2,http:/link2 

[Link2Page] 
LinkID, PageID 

1,1 
1,2 
1,3 
2,3 
2,4 
2,5 

[Pages] PageID, Title, Url , EndPage(bit) 

1, title page 1 , http:/page1 , false 
2, title page 2 , http:/page2 , true 
3, title page 3 , http:/page3 , false 
4, title page 4 , http:/page4 , false 
5, title page 5 , http:/page5 , true 

我想列出所有的鏈接,並從頁面1個記錄順序由ENDPAGE遞減一條記錄每條記錄的乘數

例如

LinkId , Link , PageID , Title , Url 
1 , http:/link1 , 2 , title page 2 , http:/page2 
2 , http:/link2 , 5 , title page 5 , http:/page5 
... 

頁I選擇每條記錄Link2Page存在就像

(Select TOP 1 PageID,Title,Url from Pages Order By EndPage Desc) 

我得到的越接近:

Select LinkID , Link , (Select TOP 1 PageID From Pages Where PageID IN (Select PageID From Link2Page Where Link2Page.LinkID = Links.LinkID) ) as PageID From Links;

,但我錯過了列(Pages.Title,Pages.Url)等

拉梅嘗試(休息嗎? ):

選擇鏈路ID,鏈接

(選擇TOP 1 PAGEID從網頁,PAGEID IN(選擇PAGEID從Link2Page凡Link2Page.LinkID = Links.LinkID))作爲PAGEID,

(從頁面中選擇TOP 1 URL,其中PageID IN(選擇頁面ID來自Link2Page其中Link2Page.LinkID = Links.LinkID))作爲URL,

(Select TOP 1 Title From Pages Where PageID IN(Select PageID from Link2Page Where Link2Page.LinkID = Links.LinkID))作爲標題

從鏈接;`

回答

0
SELECT * 
FROM Links l 
CROSS APPLY (
    SELECT TOP 1 p.* 
    FROM Pages p 
    INNER JOIN Link2Page x ON (x.PageID = p.PageID) 
    WHERE x.LinkID = l.LinkID 
    ORDER BY EndPage DESC 
) p