YUI3 YQL с использованием лимита и сортировки вместе - PullRequest
1 голос
/ 30 декабря 2010

У меня есть YQL-запрос, который объединяет несколько RSS-каналов, а затем сортирует их по дате. Это работает отлично, но я хотел бы иметь возможность разбить результаты на страницы.

Вот мой запрос:

select channel.item.title, channel.item.link, channel.item.pubDate, channel.item.description(0) from xml where url in(... urls go here ...) | unique(field='channel.item.link') | sort(field='channel.item.pubDate', descending='true')

Проблема в том, что yql выполняет LIMIT и OFFSET перед фильтром сортировки. Поэтому, если у меня есть LIMIT 5, я получу только первые 5 элементов из первого RSS-канала в списке ... а не первые 5 элементов всех моих комбинированных каналов.

Есть ли способ цепочки запросов, чтобы я мог получить весь свой запрос, который сортирует все результаты, и вызвать запрос, который ограничивает мои результаты.

Спасибо за помощь.

Ответы [ 2 ]

1 голос
/ 27 января 2011

Используйте усечение (количество = 5), чтобы получить первые 5 элементов отфильтрованного канала.

select channel.item.title, channel.item.link, channel.item.pubDate, channel.item.description(0) from xml where url in(... urls go here ...) | unique(field='channel.item.link') | sort(field='channel.item.pubDate', descending='true') | truncate(count=5)

Или метод tail () с обратной сортировкой (опубликованный выше) также будет работать.

См. http://developer.yahoo.com/yql/guide/sorting.html

0 голосов
/ 13 января 2011

Как насчет использования tail() и дополнительно sort() в другом направлении?

Примерно так:

select channel.item.title, channel.item.link, channel.item.pubDate, channel.item.description(0) from xml where url in(... urls go here ...) | unique(field='channel.item.link') | sort(field='channel.item.pubDate', descending='false') | tail(count=5)

Я не пробовал это, и я не уверен, какой видзаказ вам нужен, но вы наверняка можете использовать tail().По-видимому, нет эквивалентной функции head(), поэтому убедитесь, что самые новые элементы являются окончанием после вашей сортировки.

Для получения дополнительной информации см. http://developer.yahoo.com/yql/guide/sorting.html

...