Как объединить результаты двух довольно разных YQL SELECT (не подселект)? - PullRequest
3 голосов
/ 29 февраля 2012

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

SELECT * FROM xml WHERE url="http://www.google.com/ig/api?weather=Tbilisi"
AND itemPath="//current_conditions/temp_c"

и

SELECT * FROM html WHERE url='http://amindi.ge/'
AND xpath="//*[@id='maincityholder']/h1"

Все вопросы здесь с похожей формулировкой оказываются вопросами о подвыборах, используйте query.multi, который, кажется, больше не существует, или выберите что-то отличное от *, с которым я не мог работать моих запросов даже в изоляции.

Возможно, проблемы с itemPath и xpath являются проблемой, но, как я уже сказал, я не могу заставить их работать и без них. Я что-то упустил или это невозможно с моими конкретными запросами?

1 Ответ

4 голосов
/ 29 февраля 2012

Таблица query.multi существует там же, где и всегда. Вы забыли загрузить этот стол (или обычный env=store://datatables.org/alltableswithkeys)?

Существует также таблица yql.query.multi, которая используется точно так же, как и query.multi, но существует в собственно YQL, поэтому не требует загрузки таблицы данных в среду.

Следующий запрос, принимая ваши индивидуальные запросы (и, при необходимости, изменяя / экранируя кавычки)

SELECT * FROM yql.query.multi WHERE queries='
    SELECT * FROM xml WHERE url="http://www.google.com/ig/api?weather=Tbilisi"
    AND itemPath="//current_conditions/temp_c";
    SELECT * FROM html WHERE url="http://amindi.ge/" 
    AND xpath="//*[@id=\'maincityholder\']/h1"
';

Придает

<results>
    <results>
        <temp_c data="-2"/>
    </results>
    <results>
        <h1>6&deg;</h1>
    </results>
</results>

( Попробуйте в консоли YQL )

...