2011-06-13 12 views
1

feednormalizer YQL RSSでエラーを処理:は制限して、私は次のクエリを使用して、一度に複数のRSSフィード(チャンネル)を取得するためにYQLを使用してい

    SELECT * FROM feednormalizer 
    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つの質問を持っています

  1. どのように各フィードを一定量のアイテムに制限できますか? (たとえば、各チャンネルから上位3項目を取得したい)
  2. 2番目のURLは無効です(実際のRSSのURLではなく)。その場合、YQLの結果は2つの有効なチャネルとエラーを返しますが、有効なURLと失敗したURLは示されません。
    つまり、結果フィードごとに、どのURLから到着したかの指示はありません。
    各チャンネルをどのように識別するかについてのご意見はありますか?

おかげ

答えて

1

第一の質問:

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;" 

最もエレガントな方法はないが、それは動作します:

心に来る最初に考えたのはquery.multiを使用しています。

第二の質問:

私はそれが可能だとは思いません。 YQLのWHERE x IN()...構文は実際にはSQL結合ではないので、プロジェクションの内部サブクエリの一部を選択することはできません。私は数回自分自身と常にはプログラム的にそれを回避しなければならなかったことを、必要に応じて誰もが、このいずれかで間違った私をprooveかどう

は幸せだろう:)

+0

感謝。 1番目の答えは役に立ちます。結果のフォーマットはちょっと面倒なので、チャンネルのデータを個別にリクエストする必要があります。しかし、それは私に2番目の質問のアイデアを与えました:複数のクエリを使用することができ、単一のフィードが無効である場合 - あなたはそれが結果のインデックスであるかを知ることができます。また、最もエレガントではありません - しかし、少なくともそれは動作します:)とにかく - あなたの助けにもう一度感謝! –

関連する問題