我在sql server中有以下表格:
photoalbumsTable:
album_ID
album_caption
albumtagmap
ID
album_id
tag_id
albumtags
ID
tag_name
我有以下查询,它会显示其中t.tag_name位于“Trips”或“海滩”中:
SELECT b.* FROM albumtagmap bt, photoalbums b, albumtags t
WHERE bt.tag_id = t.id
AND (t.tag_name IN ('Trips', 'Beach'))
AND b.album_id = bt.album_id
GROUP BY b.album_id, b.album_caption, b.active, b.description, b.album_name, b.album_date, b.highlight_picture
ORDER BY b.album_date desc
如果我想显示,其中t.tag_name位于“Trips”和“Beach”,那么等效查询是什么? 意味着在相册标签表中有针对每个标签的特定photoalbum的条目。
答案 0 :(得分:1)
( SELECT b.* FROM albumtagmap bt, photoalbums b, albumtags t
WHERE bt.tag_id = t.id
AND t.tag_name='Trips'
AND b.album_id = bt.album_id )
INTERSECT
( SELECT b.* FROM albumtagmap bt, photoalbums b, albumtags t
WHERE bt.tag_id = t.id
AND t.tag_name = 'Beach'
AND b.album_id = bt.album_id )
ORDER BY album_date desc
答案 1 :(得分:0)
听起来像你可能想要使用两个子查询的JOIN(每个标签一个查询,然后是album_id上的内连接)。您也可能只使用两个EXISTS子查询的AND。