есть ли эквивалент функции «IN» для добавления «И» к запросам - PullRequest
0 голосов
/ 01 ноября 2009

У меня есть следующие таблицы на сервере SQL:

photoalbumsTable:
album_ID
album_caption

albumtagmap
ID
album_id
tag_id

albumtags
ID
tag_name

У меня есть следующий запрос, который покажет мне , где t.tag_name находится в «Поездках» ИЛИ «Пляж»:

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 находится в «Поездки» И «Пляж» то есть, где есть записи в таблице альбомов для этого конкретного фотоальбома для каждого тега.

Ответы [ 2 ]

1 голос
/ 01 ноября 2009
( 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
0 голосов
/ 01 ноября 2009

Похоже на то, что вы можете использовать JOIN из двух подзапросов (один запрос для каждого тега, затем внутреннее соединение для album_id). Вы также можете использовать только AND из двух подзапросов EXISTS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...