问题描述
|
我正在使用YQL使用以下查询一次检索多个RSS @R_502_5646@(频道):
SELECT * FROM @R_502_5646@normalizer
WHERE output=\"RSS_2.0\"
AND url in (\"http://RSS.cnn.com/RSS/edition.RSS\",\"http://bad.url.com/nothing\",\"http://RSS.cnn.com/RSS/edition_space.RSS\")
所以我实际上有2个问题:
如何将每个供稿限制为一定数量的物品? (例如,我想从每个渠道中获取前三项)
请注意,第二个URL无效(不是真实RSS的URL)。在这种情况下,YQL结果返回2个有效通道以及一个错误,但是没有指示哪个URL有效和哪个URL失败。
换句话说-对于每个结果供稿,都没有指示它从哪个URL到达的。
关于如何识别每个渠道有什么想法?
谢谢
解决方法
第一个问题:
我想到的第一个想法是使用
query.multi
:
SELECT rss.channel.item FROM query.multi WHERE queries=\"
SELECT channel.item FROM feednormalizer WHERE output=\'rss_2.0\' AND url = \'http://rss.cnn.com/rss/edition.rss\' LIMIT 3;
SELECT channel.item FROM feednormalizer WHERE output=\'rss_2.0\' AND url = \'http://rss.cnn.com/rss/edition_space.rss\' LIMIT 3;\"
不是最优雅的方法,但它可以工作。
第二个问题:
我认为不可能。由于YQL的WHERE x IN ()...
语法实际上不是SQL连接,因此无法选择投影中内部子查询的部分,这取决于您的情况。
如果有人在这个问题上证明我做错了,我会很高兴,因为我本人需要几次,并且总是必须以编程的方式来解决它:)