2011-09-05 54 views
1

我想根据他的朋友的性别和基于pic_big!=NULL(每个朋友都应该登录到他的FaceBook账户中)获取用户的朋友有一个大的配置文件图片)。SQL查询根据性别获取用户的Facebook朋友列表

下面是我写的代码。

NSString *queryString = [NSString stringWithFormat:@"%@%@%@%@%@%@%i%@%@", 
          @"SELECT name, pic_big, sex, uid FROM user ", 
          @"WHERE sex=", @"male", @" AND ", 
          @"pic_big != 'null' AND uid IN (SELECT uid2 ", 
          @"FROM friend WHERE uid ", loggedInID, @")", 
          @"ORDER BY name"]; 
NSMutableDictionary *dictionary=[NSMutableDictionary 
    dictionaryWithObjectsAndKeys:queryString,@"query", nil]; 

[FBRequest getRequestWithParams:dictionary 
        httpMethod:@"GET" 
         delegate:self 
        requestURL:@"fql.query"]; 

loggedINiD是用户的登录ID。我在代表方法中没有得到任何回应。我相信我需要重新检查这个SQL查询。任何建议请。

回答

2

你有几个错误你FQL代码并添加一个建议,我会做了简单起见,这里是你应该查询什么来代替:

SELECT名字,pic_big,性别,UID FROM用户WHERE UID在(选择UID2从相知WHERE UID1 =我())和性别= “男”

注意事项:

  1. UID1是朋友表中的正确索引字段,不是的uid
  2. 你失踪之后的等号“从朋友那里来”
  3. me()是FQL中的一个辅助函数,它表示当前会话用户(即,应用用户)
  4. pic_big永远不会为空,因为即使Facebook上的用户的默认配置文件图片也会为此返回一个值,因此对其进行测试是多余的。
  5. 我已经改变了WHERE子句的顺序,但这应该不重要。
+0

嗨,我有一个类似的问题,因为我的代表没有发射......这是正确的代表使用上面的FQL查询时使用? - (void)请求:(FBRequest *)请求didLoad:(id)result {...}谢谢! – Smikey

0
NSString *queryString = [NSString stringWithFormat:@"SELECT name, pic_big, sex, uid FROM user WHERE sex='male' AND pic_big != 'null' AND uid IN (SELECT uid2 FROM friend WHERE uid = %i) ORDER BY name", loggedInID]; 

使用此查询字符串。我不确定,但认为这会帮助你。