fql join; can i join two tables with FQL?

Tareq Abuzuhri picture Tareq Abuzuhri · Jul 2, 2011 · Viewed 15.4k times · Source

I have the following FQL I want to join with user table to add name field! How can I do that?After I test making normal left join I got error message (601 join not possible with FQL). How can I join and add name field????

<!DOCTYPE html>
<html>
<body>
<div id="fb-root"></div>
<a href="#" onclick="getPhotos();return false;">Get Photos</a>
<script src="http://connect.facebook.net/en_US/all.js"></script>
<script>
  FB.init({ appId: 'yourAppID', status: true, cookie: true, xfbml : true });

  function getPhotos() {  
    FB.login(function(response) {
      if (response.session && response.perms) {
        var oneWeekAgo = Math.round((new Date().setDate(new Date().getDate()-7)) / 1000);
        FB.api(
          {
            method: 'fql.query',
            query: 'SELECT pid, caption, aid, owner, link, src_big, src_small, created, modified FROM photo WHERE aid IN (SELECT aid FROM album WHERE owner IN (SELECT uid2 FROM friend WHERE uid1=me())) AND created > ' + oneWeekAgo + ' ORDER BY created DESC LIMIT 20'
          },
          function(response) {
            alert('Photos: ' + JSON.stringify(response));
          }
        );
      }
    } , {perms:'friends_photos'}); 
}
</script>
</body>
</html>

Answer

phteven picture phteven · Nov 3, 2011

Do something like this:

FB.api({
    method: 'fql.multiquery',
    queries: {
        'query1': 'SELECT uid2 FROM friend WHERE uid1 = me()',
        'query2': 'SELECT vid, owner, title, description FROM video WHERE owner IN (SELECT uid2 FROM #query1)'
    }
},
function(response) {
    // response should have 2 objects in it, both containing an fql_result_set 
    // array with the data and the name you entered for the query (i.e. 'query1')
    alert('Photos: ' + JSON.stringify(response));
});