Заявление FQL для получения фотографии двух человек (ошибка запроса не индексируется) - PullRequest
2 голосов
/ 25 ноября 2010
SELECT pid FROM photo WHERE me() and $otherPerson IN ( SELECT subject FROM photo_tag WHERE pid=pid ) ORDER BY created DESC LIMIT 1

Я пытаюсь получить фотографию, на которой отмечены оба пользователя ($ otherPerson заменяется идентификатором пользователя).Этот запрос возвращает:

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

Ответы [ 3 ]

3 голосов
/ 24 октября 2011

Это должно сработать.

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>
)
0 голосов
/ 09 мая 2012

Я попробовал другие решения и столкнулся с проблемой - если ваш друг установил свои настройки конфиденциальности, чтобы запретить приложениям доступ к его фотографиям, то следующий запрос 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>"
0 голосов
/ 25 ноября 2010

А как насчет:

  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?

...