从SQL Server中的JOIN结果中获取不同的行

Lea*_*ing 2 sql sql-server sql-server-2008

我有两个表用于存储Album_Name,另一个表用于存储Album_Photos

我想写一个查询,以便它可以让我了解详细信息

Album_Name    Album_ID     Album_Date     ImageSmall
Album One     1            2013-08-02      100.jpg
Album Two     2            2013-09-09      55.jpg
Run Code Online (Sandbox Code Playgroud)

我希望从Album_Name表格和第一张图片中详细说明相册详情,我没有从Album_Photo表格分配到相册

我试过JOINS哪个不起作用然后我创建一个视图将跟随SQL这不起作用

SELECT 
   a.Album_Name AS Album_Name
   , a.Album_Date AS Album_Date
   , a.Page_ID AS PageID
   , p.Image_ID AS Image_ID
   , p.Image_Small AS Image_Small 
FROM 
   Album_Name a
LEFT OUTER JOIN 
   Album_Photos p ON a.Album_ID = p.Album_ID
Run Code Online (Sandbox Code Playgroud)

我试着DISTINCT Album_Name查看它让我和上面的语句一样

SELECT 
    DISTINCT [Album_Name], Album_Date, Page_ID, Image_Small  
FROM 
    vw_AlbumName_AlbumPhotos 
WHERE 
    Page_ID = 3
Run Code Online (Sandbox Code Playgroud)

样本数据Album_Name和Album_Photos表格

Album_ID    Album_Name  Album_Date  Page_ID
1   Album One   2013-08-02      3
2   Album Two   2013-09-09      3
3   Album Three 2013-09-10      9

Image_ID    Page_ID Album_ID    ImageSmall
1       0       1   100.jpg
2       0       1   21.jpg
3       0       1   36.jpg
4       0       1   44.jpg
5       0       2   55.jpg
6       0       2   66.jpg
7       0       3   10.jpg
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏.

Gor*_*off 5

您正在复制,因为每张专辑有多张照片.要获得一个,请使用row_number():

SELECT Album_Name AS Album_Name, a.Album_Date AS Album_Date, a.Page_ID AS PageID,
       p.Image_ID AS Image_ID, p.Image_Small AS Image_Small 
FROM Album_Name a left outer JOIN
     (select p.*, row_number() over (partition by Album_Id order by Image_ID) as seqnum
      from Album_Photos p 
     ) p
    ON a.Album_ID = p.Album_ID and seqnum = 1;
Run Code Online (Sandbox Code Playgroud)