我有一个包含3个表的SQLite照片/相册数据库:
相册
id name hide
--------------------------
1 Holiday 2010 1
2 Day Trip 0
照片
id file
-----------------
1 photo1.jpg
2 photo2.jpg
3 photo3.jpg
4 photo4.jpg
关系(将照片与相册相关联)
album photo
-----------------
1 1
1 2
2 3
2 1
可以将照片分配到零个,一个或多个相册。每张专辑都有一个“隐藏”列,表示是否应该忽略此专辑的照片。
我正在尝试查找SELECT查询,该查询返回未分配给相册的所有照片+所有未隐藏的相册中的照片(即将其“隐藏”值设置为0)。< / p>
我想出了一个选择可见相册中的照片的查询,但我不知道如何包含未分配到相册的照片:
SELECT file
FROM photos, albums, relation
WHERE photos.id = relation.photo
AND albums.id = relation.album
AND albums.hide = 0
此查询返回:
photo1.jpg
photo3.jpg
但是,所需的结果是:
photo1.jpg
photo3.jpg
photo4.jpg
问题是photo4.jpg未分配给Relation表中的相册。你知道怎么解决这个问题吗?
非常感谢你的帮助!
答案 0 :(得分:0)
您的第一个查询会重新审核照片1和3,因此我认为这是正确的。
因此,您可以加入并查找空值,因为这将没有要加入的相册。
SELECT file
FROM photos LEFT OUTER JOIN (relation join albums on relation.album = albums.id)
ON relation.photo = photos.id
WHERE albums.hide = 0 OR albums.id IS NULL