FQL statement to get a photo of two people (Query not indexable error)
SELECT pid FROM photo WHERE me() and $otherPerson IN ( SELECT subject FROM photo_tag WHERE pid=pid ) ORDER BY created DESC LIMIT 1
I'm trying to get a photo that has bo开发者_如何学Pythonth users tagged in it ($otherPerson is replaced with a user id). This query returns:
604 Your statement is not indexable. The WHERE clause must contain an indexable column. Such columns are marked with * in the tables linked from http://wiki.developers.facebook.com/index.php/FQL_Tables
Any ideas on how I can make this work?
UPDATE:
I currently have this query working but I feel as though there's a better way to go about.
SELECT pid, src_big FROM photo
WHERE pid IN (
SELECT pid FROM photo_tag
WHERE subject=$otherGuy
AND pid in (
SELECT pid FROM photo_tag WHERE subject=me()
)
)
This should do the trick.
SELECT pid, src_big
FROM photo
WHERE pid IN(
SELECT pid
FROM photo_tag
WHERE subject = me()
)
AND pid IN(
SELECT pid
FROM photo_tag
WHERE subject = <friend_user_id>
)
What about:
SELECT pid
FROM photo
WHERE me() IN (SELECT subject
FROM photo_tag
WHERE pid=pid)
AND $otherPerson IN (SELECT subject
FROM photo_tag
WHERE pid=pid)
ORDER BY created DESC
LIMIT 1
Also, what pid=pid
means?
I tried the other solutions and ran into a problem - If your friend has set his privacy settings to disallow apps from accessing his photos, then the following FQL query will return an empty table:
"SELECT pid FROM photo_tag WHERE subject = <friend_user_id>"
I solved this by using the following multiquery instead:
"query1" : "SELECT subject, pid FROM photo_tag WHERE pid IN (SELECT pid FROM photo_tag WHERE subject=me())"
"query2" : "SELECT pid FROM #query1 WHERE subject= <friend_user_id>"
精彩评论