Anatoly Lubarsky Logo
programming, design, integration, games, music

About FQL

Update 1/10/2018

FQL had been deprecated by Facebook a while ago, nevertheless I decided to edit the post and add more information. Most of the information posted below had never been documented.


What is FQL?

FQL is a Facebook platform SQL-style interface which can be queried by 3rd party applications using SQL-like syntax.


Some key features:


  • FQL does not support joins, but supports sub-queries (including IN keyword).
  • Query must be indexable (WHERE clause should include at least one field that is defined as "indexable").
  • COUNT is not supported.
  • It is possible to select structured fields (e.g. SELECT current_location.zip) or entire structures.
  • The output is XML.

FQL vs Graph API

FQL has a WHERE clause, which graph API doesn't have any equivalent of. I'm talking of something more sophisticated than just getting object connections (like user's friends). Examples: get user's friends who are also app users and online in chat, get all events which start tomorrow and not created by myself, etc, etc.


Besides that FQL is more like an extension to the graph API rather than something independent and is used to make queries on graph objects.


Operators Supported

AND, OR, NOT, IN, ><=, +-*/

Limit operator format:

LIMIT: OFFSET, ROWCOUNT

i.e.

LIMIT 5, 5

Functions Supported

me()
now()
rand()
strlen(...)
concat(...)
substr(...)
strpos(...)
lower(...)
upper(...)  

FQL vs SQL

ORDER BY is supported, DESC, ASC is supported also, SELECT * not supported. Joins not supported but you can do subqueries.


How to count records

Given that output XML is transferred over the wire one should also take care of the bandwidth. For example we want to get COUNT (only) of all current user friends who installed the current application. COUNT is not supported so we need to fetch all required records and count them on the application side. The query should go like so:


SELECT '' 
  FROM user 
 WHERE uid IN (SELECT uid2 
                 FROM friend 
                WHERE uid1 = USERID)
   AND has_added_app = 1

Selecting empty string would reduce the size of the XML dramatically, yet it is very easy to count rows quickly.


Enjoy


Related Posts:

Sunday, October 07, 2007 3:42 AM

Login

Subscribe via RSS

Article Categories

.Net Framework
ASP.NET Tips
C# Win32 API
HTML, CSS, Web
Javascript Tips
MSSQL Tips
System
System.Net
WebServices

Archives

(02) January, 2018
(01) June, 2013
(03) March, 2013
(02) February, 2013
(01) July, 2012
(01) April, 2012
(01) September, 2011
(01) August, 2011
(03) May, 2011
(01) March, 2011
(02) December, 2010
(01) November, 2010
(01) October, 2010
(01) June, 2010
(01) May, 2010
(02) March, 2010
(01) January, 2010
(02) December, 2009
(03) September, 2009
(03) August, 2009
(09) July, 2009
(04) June, 2009
(03) May, 2009
(02) April, 2009
(03) March, 2009
(02) February, 2009
(02) January, 2009
(05) December, 2008
(04) November, 2008
(06) October, 2008
(04) September, 2008
(07) August, 2008
(04) July, 2008
(05) June, 2008
(07) May, 2008
(05) April, 2008
(03) March, 2008
(02) February, 2008
(03) January, 2008
(03) December, 2007
(05) November, 2007
(05) October, 2007
(07) September, 2007
(13) August, 2007
(11) July, 2007
(14) June, 2007
(16) May, 2007
(14) April, 2007
(10) March, 2007
(14) February, 2007
(20) January, 2007
(15) December, 2006
(12) November, 2006
(11) October, 2006
(13) September, 2006
(13) August, 2006
(12) July, 2006
(11) June, 2006
(12) May, 2006
(22) April, 2006
(30) March, 2006
(13) February, 2006
(14) January, 2006
(19) December, 2005
(17) November, 2005
(17) October, 2005
(17) September, 2005
(12) August, 2005
(14) July, 2005
(09) June, 2005
(15) May, 2005
(12) April, 2005
(21) March, 2005
(11) February, 2005
(12) January, 2005
(19) December, 2004
(13) November, 2004
(12) October, 2004
(15) September, 2004
(09) August, 2004
(25) July, 2004
(23) June, 2004
(31) May, 2004
(21) April, 2004
(16) March, 2004
(09) February, 2004
(06) January, 2004
(02) December, 2003
(01) November, 2003

Post Categories

.Net and C#
Android
Antispam
App. Development
Architecture
ASP.NET
Blogging
Deprecated Projects
Facebook Platform
Fun
Google
iOS
Javascript
Misc.
MSSQL
Music
My Games
Performance
Roller
Social Networks
Tools
Visual Studio
Web 2.0
WebServices

About Me

linkedin Profile
Recs
Who am I

My Sites

Billy Beet
x2line blogs