2012-03-11 3 views
0

Я немного играю с facebook api, и это проблема, которая представляет собой небольшую проблему, с использованием Multiquerying, чтобы получить все страницы, которые понравились пользователям. , поэтому я делаю один звонок, чтобы получить все страницы, которые понравились пользователю, и более простой вызов, чтобы получить имена страниц. Я в конечном итоге с 2-х списков, один и один id страниц page_names:Манипулирование данными, полученными из запросов Facebook API-вызовы

queries.add("SELECT uid,page_id,created_time FROM page_fan WHEREuid="+userId,"page_likes"); 
queries.add("SELECT name,page_url FROM page WHERE page_id IN (SELECT page_id FROM #page_likes)","pagedata"); 

Есть ли способ, что вместо отображения 2 списка, больной получает один список с, который показывает название страницы под его идентификатор страницы? что-то вроде этого: «123214211» -> «coca», «123213» -> «pepsi»

, который так полезен, Допустим, мне нужно получить комментарии к фотографиям, поэтому у меня есть один запрос для фотографий, второй запрос для комментариев. Но как я узнаю, какие комментарии подходят для какой фотографии?

Благодаря вперед

ответ

1

я лично не использовали API Facebook, но от того, оглядел его, вот что я могу сказать. Они не позволяют идентифицировать несколько таблиц/сущностей в одном запросе, и из того, что я вижу, это означает, что нет никакого способа использовать JOIN любого типа в запросе, который в основном является тем, о чем вы просите. Практически все реляционные системы баз данных имеют возможность делать JOIN, но я думаю, что Facebook, вероятно, решил не допускать, чтобы этот вариант был уверен, что сторонние пользователи, использующие свои API, не будут создавать слишком сложный SQL, который заставляет их серверы больше времени на обработку , Я думаю, вам просто нужно написать метод AS3, который занимается комбинацией этих двух списков, я считаю, что это можно было бы написать общим способом, где его можно было бы повторно использовать без изменения метода. Мое предложение состояло бы в том, чтобы создать «класс-оболочку», который имеет два свойства: одно с объявленным типом Объекта и одно типизированное как некоторая коллекция. Я бы предложил следующее (в псевдокоде, написанном как можно ближе к реальности, без фактического тестирования :)):

public class JoinWrapper 
{ 
    public var originalObject:Object; 
    public var childrenCollection:ArrayCollection = new ArrayCollection(); 
} 

public class JoinUtil 
{ 

    public static function joinThings(query1Results:ArrayCollection, query1JoinProperty:String, query2Results:ArrayCollection, query2JoinProperty:String):ArrayCollection 
    { 
     var tempCollection:ArrayCollection = new ArrayCollection(); 
     for each(var object:Object in query1Results) 
     { 
      var jw:JoinWrapper = new JoinWrapper(); 
      jw.originalObject = object; 
      for each(var anotherObject:Object in query2Results) 
      { 
       if(object[query1JoinProperty]==anotherObject[query2JoinProperty]) 
        jw.childrenCollection.addItem(anotherObject); 
      } 
      tempCollection.addItem(jw); 
     } 
     return tempCollection 
    } 
} 
Смежные вопросы