Как получить идентификатор запроса MySQL, который не совпадает с моим?

0

У меня есть следующий запрос mysql:

$get_friends_posts = "SELECT * FROM users_friendships
                      WHERE userid1 != $myid and userid2 = $myid 
                      or userid2 != $myid and userid1 = $myid";

$friendpost = mysqli_query($mysql, $get_friends_posts);

$ myid - уникальный идентификатор пользователя, который зарегистрировался и просматривает этот скрипт. Теперь я хочу получить удостоверение личности через чек или что-то, что не соответствует мне, как противник дружбы.

В базе данных есть строки для id, userid1 и userid2.

  • 0
    ваша логика совершенно неверна, что не даст желаемого результата
  • 0
    Я знаю, и мой мозг собирался отключиться, поэтому я пришел сюда
Показать ещё 1 комментарий
Теги:

1 ответ

0
Лучший ответ

Этот запрос вернет один столбец (userid) из таблицы users_friendships где $myid - либо userid1 либо userid2. Я предполагаю, что не будет строк, где userid1 и userid2 будут одинаковыми.

SELECT
CASE WHEN userid1 = $myid THEN userid2 ELSE userid1 END AS userid
FROM users_friendships
WHERE userid1 = $myid OR userid2 = $myid

Если вы хотите использовать эти результаты для получения данных из другой таблицы, вы можете сделать что-то вроде этого:

SELECT
posts.*
FROM posts
WHERE posts.userid IN
(
    SELECT
    CASE WHEN userid1 = $myid THEN userid2 ELSE userid1 END AS userid
    FROM users_friendships
    WHERE userid1 = $myid OR userid2 = $myid
)

Или, если у вас возникла более сложная потребность, когда вам нужна дополнительная информация о пользователе, а также о записи, вы можете сделать что-то вроде этого:

SELECT
    users.name,
    posts.date,
    posts.title
FROM users_friendships
INNER JOIN users ON users.userid = CASE WHEN users_friendships.userid1 = $myid THEN users_friendships.userid2 ELSE users_friendships.userid1 END
INNER JOIN posts ON posts.userid = CASE WHEN users_friendships.userid1 = $myid THEN users_friendships.userid2 ELSE users_friendships.userid1 END
WHERE users_friendships.userid1 = $myid OR users_friendships.userid2 = $myid
ORDER BY posts.date DESC
  • 0
    Хорошо, отлично, это дает мне все документы, которые я хочу иметь. Другая проблема: я хочу использовать эти идентификаторы в другом запросе сейчас, чтобы выдавать данные из другой таблицы, которая включает идентификаторы моего друга, именно те, которые мы получаем из этого сейчас.
  • 0
    Что будет делать ваш другой запрос? Например, если вы хотите получить имя другого пользователя, вы можете выполнить INNER JOIN в том же запросе, чтобы также получить имя из другой таблицы.
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню