2012-01-20 23 views
3

我需要在客户端完全构建一个Twitter模块。是否可以在YQL中获得两个结果集的交集或差异?

我打算使用Twitter API作为数据,YQL得到Same Origin Policy,并且也因为它的更高速率限制。我之前使用过这种组合,取得了成功。

我需要做的一件事就是获得带有hashtag和来自有限用户集的推文列表。

This gets tweets with the #stackoverflow hash tag by users alexdickson and lizardbill.

我还需要得到不同的鸣叫。

This gets all tweets with the #stackoverflow hash tag.

现在,我需要显示第二集合,但不包括从第一组的结果。这将是一个diff的结果,如PHP的array_diff()

为了完整起见,我可能还需要通过获得两个结果的交集,即两个结果集中出现的tweets列表来实现某些功能。这与PHP的array_intersect()类似。

自从我使用SQL并且无法想象如何在YQL中实现这一点,这已经有一段时间了。

回答

2

YQL支持子选择(子查询)。请参阅Joining Tables with Sub-selects。子选择与IN operator一起使用,以过滤外部选择的结果。

为了您的特定查询,也有twitter.searchCommunity Open Data Table可以救你从建筑Twitter的网址,并使用json表。

select * 
from twitter.search 
where q="#stackoverflow" 
and id not in (
    select id 
    from twitter.search 
    where q="#stackoverflow from:alexdickson, OR from:lizardbill" 
) 

Try this query in the YQL console

2

看起来像我终于明白了。 YQL支持子查询。

SELECT results 
FROM json 
WHERE url = "http://search.twitter.com/search.json?q=%23stackoverflow" 
     AND results.id NOT IN (SELECT results.id 
           FROM json 
           WHERE url = 
"http://search.twitter.com/search.json?q=%23stackoverflow%20from%3aalexdickson,%20OR%20from%3alizardbill" 
) 

YQL Console

+0

你也可以做类似的方式使用'twitter.search'社区表。 'select * from twitter.search where q =“#stackoverflow”and id not in(从twitter.search选择id,其中q =“#stackoverflow from:alexdickson或OR from:lizardbill”) – salathe

+0

@salathe谢谢你。我从未注意到社区表。如果你张贴作为答案,我会接受:) – alex

+0

没问题。 [答案](http://stackoverflow.com/a/8972440/113938)。 – salathe

相关问题