2011-09-03 5 views
1

저는 여러 가지 이유로 Facebook의 fql.multiquery를 사용하고 있으며 의사가 주문한대로 결과가 다시 나타납니다. 그러나 결과에 참여하는 방법에 대해 머리를 감싸는 것처럼 보이지 않아서 내가 원하는 방식으로 사용자에게 돌려 줄 수는 있습니다. 나는이 전화를 HTTParty을 사용하고Facebook FQL Multi.Query : 결과 집합 합류

: (?) 내가 원하는 걸 제공합니다 ...하지만, 내 뇌 ISN 3 별도의 배열/해시에 그리고 어떤 이유로

checkin_query = { 
    "user_checkins" => "SELECT timestamp, coords, tagged_uids, page_id, post_id, checkin_id, message FROM checkin WHERE author_uid= me()", 
    "location_names" => "SELECT name FROM page WHERE page_id IN (SELECT page_id FROM #user_checkins)", 
    "friends_with" => "SELECT uid, name, pic_square FROM user WHERE uid IN (select tagged_uids FROM #user_checkins)" 
    } 

    params = {:queries => checkin_query.to_json, :access_token => user.token, :format => :json} 
    @checkin_info = HTTParty.get "https://api.facebook.com/method/fql.multiquery", :query => params 

그것을 다루는 방법에 대한 결론에 도달하지 못했습니다. ? 그래서 기본적으로 내가 사용자를 보여주고 싶었다 경우

는 "OK 친구, 당신은 LOCATION_NAME *이 사람들과 함께 *에 있었다 : * FRIENDS_WITH * 나는 그 3 개 별도의 결과 집합을 가지고 모든 것을 일치 수있는 방법

인가가 이전 쿼리에서 무언가를 포함 시켜서 다시 호출하고 일치시켜 모든 것을 표시 할 수있는 방법 - 일부 체크인에는 tagged_uids가 없으므로 분명히 순서대로 처리하는 것은 친구들과 함께있을 때는 작동하지 않습니다. .

Google 검색 날의이 (가 해결책이 될 수처럼 보인다) 가입 SQL 보여 -.하지만 FQL에서 사용할 수 없습니다

답변

0

FQL 또는 HTTParty에 대한 경험이 없으므로 완전히 잘못되었을 수 있습니다. 다음과 같이

나는 SQL을 포맷하는 경향이 :

location_names 및 friends_with 아마 해시의 배열로 반환됩니다

checkin_query = { 
    "user_checkins" => " 
    SELECT tagged_uids, page_id 
    FROM checkin 
    WHERE author_uid = me() 
    ", 

    "location_names" => " 
    SELECT name 
    FROM page 
    WHERE page_id IN (
     SELECT page_id 
     FROM #user_checkins 
    ) 
    ", 

    "friends_with" => " 
    SELECT name 
    FROM user 
    WHERE uid IN (
     SELECT tagged_uids 
     FROM #user_checkins 
    ) 
    " 
} 
: 확실하지

"friends_with" => [{:name => 'John'}, {:name => 'Sue'}] 

무엇 HTTParty 반환, 그러나의 해시 경우 시도해 볼 수있는 해시 배열 :

puts "OK dude, you were at #{ @checkin_info[:location_names].map { |e| e.values } } with these people: #{ @checkin_info[:friends_with].map { |e| e.values } } 

@checkin_info 당신이 이것을 시도 할 수있는 답을 되 돌린다 :

puts @checkin_info.to_yaml