Всем привет! Сейчас изучаю sql, столкнулся с проблемой. Есть 3 таблицы:
Делаю поиск по тегам. Пример: man, horse, riding и мне необходимо вывести фотографии по количеству теговвстречающихся у этой фотографии.
SELECT id FROM photos WHERE id IN (SELECT photo_id FROM tags_rel WHERE tag_id in ( SELECT id FROM tags WHERE tag_name='man' OR tag_name='riding' OR tag_name='horse') GROUP BY photo_id ORDER BY COUNT(photo_id) DESC)
Данный запрос не сортирует по количеству. С этим отлично справляется запрос:
SELECT photo_id, COUNT(*) FROM tags_rel WHERE tag_id in ( SELECT id FROM tags WHERE tag_name='man' OR tag_name='riding' OR tag_name='horse') GROUP BY photo_id ORDER BY COUNT(*) DESC
Но если к нему подставить
SELECT id FROM photos WHERE id IN (SELECT photo_id, COUNT(*) ... )
запрос перестает работать, т.к. в данном случае, IN необходима одна колонка, а не две.
Как решить проблему?
SELECT t.photo_id, COUNT(*)
FROM photos p, tags_rel t
WHERE p.id = t.photo_id
AND t.tag_id in ( SELECT id
FROM tags
WHERE tag_name IN ('man', 'riding', 'horse')
)
GROUP BY t.photo_id
ORDER BY COUNT(*) DESC
В принципе я бы и от второго IN рекомендовал избавиться аналогичным образом.
Привет! Изучаю службы WCF, море информации в короткие сроки и накопилось множество вопросов, которые надо уложить в головеИспользую EF 6 (Database...
Мне необходимо собрать некую программу для управления светом и тд
Создаю игру в Unity3D, есть модуль на Objective-C, который возвращает bool