SELECT
FRIEND.friend_two AS possible_friend, USERS.username AS possible_username
FROM
user_friends FRIEND, users USERS
WHERE
FRIEND.friend_one IN (SELECT friend_two FROM user_friends WHERE friend_one = :id)
AND FRIEND.friend_two NOT IN (SELECT friend_two FROM user_friends WHERE friend_one = :id)
AND NOT FRIEND.friend_two = :id
GROUP BY possible_friend
пользователейMySQL QUERY: JOIN несколько таблиц с ORDER BY
+------------+------------------+
| id | username |
+------------+------------------+
| 10 | Josh |
+------------+------------------+
| 20 | Steward |
+------------+------------------+
| 30 | Fenton |
+------------+------------------+
user_friends
+------------+------------+------------+------------+
| friend_id | friend_one | friend_two | Role |
+------------+------------+------------+------------+
| ramdom_id | 10 | 10 | me +
+------------+------------+------------+------------+
| ramdom_id | 20 | 20 | me +
+------------+------------+------------+------------+
| ramdom_id | 10 | 20 | friend +
+------------+------------+------------+------------+
| ramdom_id | 20 | 30 | friend +
+------------+------------+------------+------------+
friend_one = 10 (Josh) -> follows -> friend_two = 20 (Steward)
friend_one = 20 (Steward) -> follows -> friend_two = 30 (Fenton)
var_dump ($ запроса); отображает следующий текст.
Array ([possible_friend] => 30 [possible_username] => STEWARD)
Ошибка в var_dump является то, что я уже следуют Стюард и Стюард имеет идентификатор (20). То, что я хотел бы показать,
Array ([possible_friend] => 30 [possible_username] => FENTON)
С Фентон имеет идентификатор (30)
и Josh(10)
, который регистрируется в не следует Фентона.
Если Josh(10)
авторизован, он будет предложить JOSH
следовать Fenton(30)
поскольку Steward(20)
следует Fenton(30)
пока Josh(10)
нет.
Когда этот запрос приходит к закрытию, цель состоит в том, чтобы предложить Друзьям моих друзей, чтобы пользователь мог следовать, как объяснялось выше.
Как использовать GROUP BY, чтобы убедиться, что пользователь, которому предлагается, имеет правильное имя пользователя, которое будет напечатано, как я объяснил с помощью var_dump для FENTON. С момента, когда он извлекает случайные имена пользователей, которые я уже наблюдаю, а не «AS possible_friends» в запросе.
О, боже мой, думаю, я начал видеть, что звезды читают это. Можете ли вы добавить редактирование, объясняющее, что вы хотите, в простом английском. Не беспокойтесь о коде или структуре - я думаю, что это помутнение ответа. На основе ваших пользователей и таблицы user_friends, что вы хотите сделать? если я это понимаю, что-то предложить друзьям на основе друзей других друзей? – Fluffeh
Я хотел бы сделать точно так же, как предложение друга Twitter, делает ли это достаточно простым или я должен дать лучшее объяснение? – iBrazilian
В вашем посте ничего не говорится о 'UNION'. Вы имели в виду 'JOIN'? –