#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