【发布时间】:2012-07-03 05:39:18
【问题描述】:
我有几个与多语言照片库相关的表格,例如
- 专辑类别
- 专辑名
- 照片
- 照片详情
两个表的示例表结构。我实际上想要一个结果集,它将显示来自 Photos 表的所有记录列表,用于特定 AlbumID 以及一个自定义列,该列将根据 @987654325 中是否存在特定 PhotoID 显示 TRUE 或 FALSE @表
Table: Photos
PhotoID PhotoFile AlbumID
1 Photo1.jpg 7
2 Photo2.jpg 7
3 Photo3.jpg 5
4 Photo4.jpg 5
5 Photo5.jpg 7
6 Photo6.jpg 7
Table: PhotoDetails
PDID PhotoID PDTitle AlbumID LanguageID
11 1 Photo 1 7 1
22 2 Photo 2 7 1
33 3 Photo 3 5 1
44 4 Photo 4 5 1
DESIRED OUT PUT
PhotoID PDTitle AlbumID DetailPresent
1 Photo1 7 TRUE
2 Photo2 7 TRUE
5 Photo5 7 FALSE
6 Photo6 7 FALSE
我尝试了几个基于 JOIN 的查询,但都没有得到想要的结果
SELECT pd.PhotoTitle, p.PhotoTN,p.PhotoCreatedOn, pd.AlbumID, ISNULL(p.PhotoID,NULL) AS Missing FROM AlbumPhotos p
JOIN AlbumPhotoDetails pd
ON p.PhotoID = pd.PhotoID WHERE pd.AlbumID = 16
这个查询给了我同样的结果
SELECT pd.PhotoTitle, p.PhotoTN,p.PhotoCreatedOn, pd.AlbumID, ISNULL(p.PhotoID,NULL) AS Missing FROM AlbumPhotos p
JOIN AlbumPhotoDetails pd
ON p.PhotoID = pd.PhotoID WHERE pd.AlbumID = 16
OR p.PhotoID IN (SELECT PhotoID FROM AlbumPhotoDetails WHERE LanguageID = 1 AND AlbumID = 16)
上面的查询让我得到基于PhotoID的匹配结果。我迷失了如何才能真正达到预期的结果,如上面的示例“DESIRED OUT PUT”所示
【问题讨论】:
标签: c# sql sql-server-2008 join