【问题标题】:FQL statement to get a photo of two people (Query not indexable error)获取两人照片的 FQL 语句(查询不可索引错误)
【发布时间】:2010-11-25 03:16:20
【问题描述】:
SELECT pid FROM photo WHERE me() and $otherPerson IN ( SELECT subject FROM photo_tag WHERE pid=pid ) ORDER BY created DESC LIMIT 1

我正在尝试获取一张同时标记了两个用户的照片($otherPerson 被替换为用户 ID)。此查询返回:

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

关于如何完成这项工作的任何想法?

更新:

我目前正在使用此查询,但我觉得好像有更好的方法。

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()
                             )
               )

【问题讨论】:

    标签: facebook facebook-graph-api facebook-fql


    【解决方案1】:

    这应该可以解决问题。

    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>
    )
    

    【讨论】:

    • 感谢克里斯托夫!这是有效的,但它只获取 X 数量的照片 ~ 100 左右。有没有办法获取所有照片?设置“限制 99999”不起作用。谢谢!
    【解决方案2】:

    怎么样:

      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
    

    另外,pid=pid 是什么意思?

    【讨论】:

    • 我正在尝试选择 photo_tags,其中 photo_tag 的 pid 等于 photo 的 pid 但我不确定如何在 FQL/SQL 中执行此操作
    【解决方案3】:

    我尝试了其他解决方案并遇到了一个问题 - 如果您的朋友已将他的隐私设置设置为禁止应用访问他的照片,那么以下 FQL 查询将返回一个空表:

    "SELECT pid FROM photo_tag WHERE subject = <friend_user_id>"
    

    我通过使用以下多查询解决了这个问题:

    "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>"
    

    【讨论】:

    • Doh,我很快就联系上了。原始问题中的更新解决方案也适用于我。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多