SQL-запрос для получения списка друзей в Facebook на основе пола - PullRequest
1 голос
/ 05 сентября 2011

Я пытаюсь получить друзей пользователя (который вошел в свою учетную запись FaceBook), основываясь на поле его друзей и на основе pic_big!=NULL (у каждого друга должна быть большая фотография профиля).

Ниже мой код, который я пишу.

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 - идентификатор пользователя. Я не получаю никакого ответа в методах делегата. Я уверен, что мне нужно перепроверить этот запрос SQL. Любые предложения, пожалуйста.

Ответы [ 2 ]

2 голосов
/ 05 сентября 2011

У вас есть пара ошибок в вашем FQL-коде, и вы добавляете одно предложение, которое я хотел бы сделать для простоты, вот что вам следует запросить:

ВЫБЕРИТЕ имя, pic_big, пол, uid ОТ пользователя, ГДЕ uid в (ВЫБЕРИТЕ uid2 ОТ друга, ГДЕ uid1 = me ()) И sex = "male"

Что следует отметить:

  1. uid1 - правильное поле индекса для таблицы друзей, а не uid
  2. Вы пропустили знак равенства после "ОТ друга ГДЕ uid"
  3. me () - вспомогательная функция в FQL, которая представляет текущего пользователя сеанса (т. Е. Пользователя приложения)
  4. pic_big никогда не будет нулевым, так как даже профиль профиля по умолчанию для пользователей на Facebook возвращает значение для этого, поэтому его тестирование является излишним.
  5. Я изменил порядок предложения WHERE, но это не должно иметь значения.
0 голосов
/ 05 сентября 2011
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];  

Используйте эту queryString. Я не уверен, но думаю, что это поможет вам.

...