【问题标题】:One Record Per Record Multiplier每个记录乘数一条记录
【发布时间】:2013-11-22 20:11:13
【问题描述】:
[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  

我想按 endPage desc 列出所有页面的链接和 1 条记录

例如

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

我为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 )等

蹩脚的尝试(?):

选择 LinkID , Link ,

(Select TOP 1 PageID From Pages Where PageID IN (Select PageID From Link2Page Where Link2Page.LinkID = Links.LinkID)) 作为PageID,

(Select TOP 1 URL From Pages Where PageID IN (Select PageID From Link2Page Where Link2Page.LinkID = Links.LinkID)) 作为 URL,

(Select TOP 1 Title From Pages Where PageID IN (Select PageID From Link2Page Where Link2Page.LinkID = Links.LinkID)) 作为标题

来自链接;`

【问题讨论】:

    标签: sql sql-server tsql


    【解决方案1】:
    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
    

    【讨论】:

      猜你喜欢
      • 2023-01-17
      • 1970-01-01
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      • 2021-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多