0

FQL を使用して、友人がタグ付けされている自分の写真のリストを取得しようとしています。友達は、名前または名前の一部で指定されます。つまり、テキスト ボックスからの入力

これまでのところ、ほとんど機能する以下の FQL を思いつきましたが...

最初のクエリがレコードのリストを返すのに、2 番目のクエリが何も返さない理由を誰か教えてもらえますか? 2 つの唯一の違いは、2 番目の検索では人の名前の一部、つまり「laura」と「lau」だけを検索することです。

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 のリストを検索する 2 つのクエリに分割してみてください。

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

そして、このリストを使用する 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 (111,222,333,444,555)
)
AND owner = me()
于 2012-11-05T12:35:25.943 に答える