2013-12-21 2 views
1

Мне нужно показать «людей, которых вы знаете» на основе текущих друзей пользователя, а предложение друга должно учитывать заблокированных пользователей, если пользователь A заблокирован пользователем B, A не должны видеть пользователя B, или наоборот, в своих друзей Предложения вот моя структура таблицыКак построить запрос для «Люди, которых вы знаете»

mnc_users

id | username | email  | fullname 
--------------------------------------------------- 
1 | userA  | [email protected] | User Alpha 
2 | userB  | [email protected] | User Bravo 
3 | userC  | [email protected] | user c 
4 | userd  | [email protected] | user del 

mnc_friends

uid | fid | time 
------------------------- 
1 | 3 | 1363859398 
3 | 1 | 1363859398 
4 | 1 | 1368854898 
1 | 4 | 1368854898 
3 | 2 | 1363846116 
2 | 3 | 1363846116 
2 | 4 | 1363846116 
4 | 3 | 1363846116 

mnc_blocked

id | uid | bid 
-------------------- 
1 | 1 | 2 

mnc_frnd_rqsts

uid | fid 
----------- 
5 | 1 

Как я могу отобразить пользователей предложения в этом случае с помощью PHP и MySQL?

+0

, которые являются предложением пользователя в ваших таблицах? –

+0

У меня нет таблицы предложений, которую я хочу показать на странице динамически –

ответ

2

если и редактировать this answer добавить пару вещи, которые вы получите, работают

$user_id = 1; 

    $sql = " SELECT * FROM mnc_users WHERE id NOT IN(
              SELECT fid FROM mnc_friends WHERE uid='$user_id' AND fid!='$user_id' 
              ) 
             AND id NOT IN(
              SELECT bid FROM mnc_blocked WHERE uid='$user_id' 
              ) 
AND id NOT IN(
          SELECT fid FROM mnc_frnd_rqsts WHERE uid='$user_id' 
              ) 
     "; 
2

попробовать это

предположим, что мы пытаемся получить народы для ПользовательА: ID = 1

$user_id = 1; 

и SQL будет

$sql = " SELECT * FROM mnc_users WHERE id IN(
             SELECT fid FROM mnc_friends WHERE uid='$user_id' AND fid!='$user_id' 
             ) 
            AND id NOT IN(
             SELECT bid FROM mnc_blocked WHERE uid='$user_id' 
             ) 
    "; 
+0

этот не работает, он показывает, что люди whoz уже в моем списке друзей –

+0

да теперь вы можете снова запустить этот запрос для своих друзей один за другим PHP. вы найдете друзей друзей –

+0

Я имею в виду, если я запустил этот запрос, я получу свой текущий список друзей –

Смежные вопросы