В YQL есть возможность ограничить только первый элемент каждого канала? - PullRequest
2 голосов
/ 09 августа 2010

В YQL-запросе как вернуть только первый элемент каждого канала (например, с двумя каналами, но у меня будет больше)

select channel.title,channel.link,channel.item.title,channel.item.link  
from xml where url in(  
  'http://code.flickr.com/blog/feed/rss/',  
  'http://www.quirksmode.org/blog/index.xml'  
) 

Мне известен вариант хвоста, но он настроен на конечный результат, как я могу сделать это для фида

спасибо заранее

Ответы [ 2 ]

4 голосов
/ 09 августа 2010

Вы можете сделать несколько запросов, используя таблицу yql.query.multi, например:

select *
from yql.query.multi where queries in (
    "select channel.title,channel.link,channel.item.title,channel.item.link from xml where url='http://code.flickr.com/blog/feed/rss/' limit 1",
    "select channel.title,channel.link,channel.item.title,channel.item.link from xml where url='http://www.quirksmode.org/blog/index.xml' limit 1"
);

Или вы можете просто отфильтровать исходный запрос так, чтобы возвращался только один результат из каждого канала:

select channel.title,channel.link,channel.item.title,channel.item.link  
from xml where url in(  
    'http://code.flickr.com/blog/feed/rss/',  
    'http://www.quirksmode.org/blog/index.xml'  
 ) | unique(field="channel.link")
0 голосов
/ 09 августа 2010

Добавляя LIMIT 1 в конце

select channel.title,channel.link,channel.item.title,channel.item.link  
from xml where url in(  
  'http://code.flickr.com/blog/feed/rss/',  
  'http://www.quirksmode.org/blog/index.xml'  
) LIMIT 1
...