Как получить атрибуты внешнего ключа

#mysql

#mysql

Вопрос:

В базе данных MySQL у меня есть таблица пользователей:

введите описание изображения здесь

У меня также есть таблица комментариев:

введите описание изображения здесь

Мне нужно получить все комментарии, в которых постеры и получатели разного пола, и отобразить их идентификаторы и пол. Я не могу понять, как это сделать. Моя первая проблема заключается в том, что я не могу получить пол пользователя просто из столбцов poster / recipient.

Я пытался comments.Poster.Gender , но это, конечно, не работает. Отправитель и получатель являются внешними ключами для users.ID

Комментарии:

1. показать ожидаемые результаты? кроме того, текст гораздо более дружелюбен, чем изображения; скрипка лучше всего (например, поместите инструкции create table и insert в dbfiddle.uk/?rdbms=mysql_8.0 , вместе с любым sql, который вы пытались использовать)

Ответ №1:

Вам нужно присоединиться к пользователям дважды один раз для получателей и один раз для плакатов

 SELECT c.*, p.Name AS poster_name, p.Gender AS poster_gender, r.Name AS recipient_name, r.Gender AS recipient_gender
  FROM comments c
  INNER JOIN users p ON (c.Poster    = p.ID)
  INNER JOIN users r ON (c.Recipient = r.ID)
  WHERE p.Gender <> r.Gender 
  

Ответ №2:

Я бы присоединился к comments таблице в users таблице дважды, один раз для плаката и один раз для получателя, а затем проверил их пол:

 SELECT c.*, p.gender, r.gender
FROM   comments c
JOIN   users p ON c.poster = p.id
JOIN   users r ON c.recipient = r.id
WHERE  p.gender <> r.gender