Я пытаюсь разработать этот код:
$users = $facebook->api(array( 'method' => 'fql.query', 'query' => "SELECT uid, last_name, pic_big" + " FROM user WHERE uid IN (" + " SELECT uid" + " FROM page_fan" + " WHERE page_id='411133928921438'" + " AND uid IN (" + " SELECT uid2 FROM friend WHERE uid1 = me()" + " )" + ")" ));
Идея заключается в том, что я не хочу использовать оператор IN, но не IN, но FQL не поддерживает такие операторы, как NOT IN, EXCEPT … Как я могу это сделать с помощью FQL? …
В FQL нет оператора NOT IN . Вы можете сделать простой выбор, используя IN, и использовать PHP для отрицания. Это немного накладные расходы, но, насколько я знаю, это единственный способ.
Я нашел связанный пост: ссылку здесь .
Facebook поддерживает NOT IN. Вам просто нужно обернуть его в достаточном количестве скобок.
Например, чтобы найти пользователей, посещающих событие, которые не являются текущим пользователем или друзьями с текущим пользователем:
SELECT uid, name FROM user WHERE uid IN ( SELECT uid FROM event_member WHERE eid=209798352393506 ) AND NOT (uid=me()) AND NOT (uid IN ( SELECT uid1 FROM friend WHERE uid2=me() ))
Просто нашел способ NOT IN
и должен делиться счастливыми новостями;)
SELECT post_id, actor_id, message FROM stream WHERE source_id in(a, b, c) and NOT (actor_id in (a, b, c))
Это позволит получать сообщения с нескольких страниц неавторизованными пользователями, то есть все сообщения пользователей или страниц, которые не являются самими страницами, например, фанами.