0

我正在尝试使用 FQL 来获取我自己的照片列表,这些照片中带有朋友标签。朋友由他们的名字或他们名字的一部分来指定。即从文本框输入

到目前为止,我已经想出了下面的 FQL,它几乎可以工作,但是......

谁能告诉我为什么第一个查询返回记录列表,而第二个查询什么也不返回?两者之间的唯一区别是第二个只搜索人名的一部分,即“劳拉”与“劳”

FQL 1

SELECT object_id, src_big, src_big_width, src_big_height, aid 
FROM photo 
WHERE object_id in (
    SELECT object_id
    FROM photo_tag 
    WHERE subject in (
        SELECT uid 
        FROM user 
        WHERE (strpos(lower(name),"laura") >=0 ) 
        AND (uid in (SELECT uid2 FROM friend WHERE uid1 = me()) )) 
)
AND owner = me()

FQL 2

SELECT object_id, src_big, src_big_width, src_big_height, aid 
FROM photo 
WHERE object_id in (
    SELECT object_id
    FROM photo_tag 
    WHERE subject in (
        SELECT uid 
        FROM user 
        WHERE (strpos(lower(name),"lau") >=0 ) 
        AND (uid in (SELECT uid2 FROM friend WHERE uid1 = me()) )) 
)
AND owner = me()
4

1 回答 1

1

Facebook 的系统中似乎存在错误,因此 strpos 在子查询中无法按预期工作。作为一种解决方法,您可以尝试将其拆分为两个查询 - 一个查找 id-s 列表:

SELECT uid 
        FROM user 
        WHERE (strpos(lower(name),"lau") >=0 ) 
        AND (uid in (SELECT uid2 FROM friend WHERE uid1 = me()) )

第二个使用此列表:

SELECT object_id, src_big, src_big_width, src_big_height, aid 
FROM photo 
WHERE object_id in (
    SELECT object_id
    FROM photo_tag 
    WHERE subject in (111,222,333,444,555)
)
AND owner = me()
于 2012-11-05T12:35:25.943 回答