Предположим, у меня есть много помеченных объектов (например, посты в блоге с тегами) для хранения в базе данных SQL. Например:
post1: work post2: work, programming, java, work post3: work, programming, sql post4: vacation, photo post5: vacation post6: photo
Предположим также, что у меня есть список тегов
work, vacation
Теперь я хочу получить посты sample размера 2, то есть два поста с тегами из списка. Например
sample1: post1 and post2 sample2: post1 and post4 sample3: post2 and post5
Кроме того, я бы хотел, чтобы sample содержал все теги в списке. Обратите внимание, что sample1
не соответствует этому требованию, так как в наборе тегов выборочных сущностей нет тега vacation
из списка.
Я хотел бы также, чтобы все вхождения тегов были равны. Рассмотрим 2 образца размера 4.
sample1: post1, post2, post3, post6 sample2: post1, post3, post4, post5
Обратите внимание, что sample1
не соответствует этому требованию, так как тег work
встречается в нем 3 раза, а vacation
— только один раз.
Мой вопрос: как спроектировать реляционную базу данных и SQL-запрос для извлечения образцов заданного размера?
having count(distinct tagid) = 1+length(@LIST) - length(replace(',', @LIST, ''))
вещь ? 17.08.2013