2012-07-13 31 views
1

得到FQL流我想从FQL如何使用全名

fql?q=SELECT post_id, app_id, source_id, updated_time, created_time, filter_key, 
     attribution, actor_id, target_id, message, app_data, action_links, 
     attachment, impressions, comments, likes, place, privacy, permalink, xid, 
     tagged_ids, message_tags, description, description_tags, type 
     FROM stream WHERE filter_key in (
      SELECT filter_key FROM stream_filter WHERE uid=me() 
      AND type='newsfeed') 

显示流数据,但问题是,该表没有用户/页面,只有ID的名称。

有没有什么办法让这些结果得名?并且不仅是actor_id,而且也是提出评论的人的名字。

是否需要对流中的所有这些id进行多查询和搜索,然后从用户和页表中进行提取。然后将这些结果循环到每个单独的流结果中,看起来有点沉重。更简单的方法?

回答

3

我不确定是否有办法一次获得所有用户和页面,但是可以运行两个单独的查询来返回用户/页面,然后使用两组结果合并性能。

用户

SELECT UID,名称从用户其中uid在(SELECT SOURCE_ID FROM流WHERE filter_key在(filter_key SELECT FROM stream_filter其中uid =我()和类型= '新闻源'))

页面

SELECT PAGE_ID,从页面名称,其中PAGE_ID在(SELECT SOURCE_ID FROM流WHERE filter_key中(选择filter_key FROM stream_filter其中uid =我()和type = '新闻源'))

+0

是的,但变得非常努力,我仍然没有得到评论者的名字。 – 2012-07-13 18:08:41

1

你可以做到这一点在以下方式:

NSString *query = 
    @"{" 
    @"'friends':'SELECT post_id,actor_id,target_id,message,created_time, likes, comment_info FROM stream WHERE source_id IN (SELECT uid2 FROM friend WHERE uid1 = me()) AND created_time > 1 ORDER BY created_time DESC LIMIT 50'," 
    @"'friendinfo':'SELECT uid, name, pic_square FROM user WHERE uid IN (SELECT actor_id FROM #friends)'," 
    @"}"; 

一旦你将得到的结果,将其存储到两个数组是这样的:

FBFriendsNewsArray =(NSArray *) [[[result objectForKey:@"data"]objectAtIndex:0]objectForKey:@"fql_result_set"]; 

           FBFriendsInfoArray=(NSArray *) [[[result objectForKey:@"data"]objectAtIndex:1]objectForKey:@"fql_result_set"]; 

虽然显示该用户的ID饲料搜索(actor_id )在朋友信息数组中。希望这会有所帮助。

+0

完美的谢谢。 – aryaxt 2013-11-18 03:27:10