Как я могу вывести столбец дважды и с разными значениями на основе ссылки на другую таблицу? - PullRequest
0 голосов
/ 21 апреля 2019

У меня есть две таблицы message и person:

  1. message таблица содержит столбцы receiverID и senderID
  2. person таблица содержит столбцы name и personID

personID и receiverID/senderID могут использоваться для соединения таблиц

У меня проблемы с выводом столбца имени дважды, один раз на основеreceiverID и второе основано на senderID с использованием предложения WHERE.Я могу вывести имя только один раз, основываясь на personID = senderID.

SELECT person.first_name AS senderFirstName,     
(SELECT person.first_name FROM person, message WHERE person_id = receiver_id)    
FROM person, message   WHERE person_id = sender_id AND sender_id = 1;

. Это дает ERROR 1242 (21000): Subquery returns more than 1 row.Я просто не знаю, что делать дальше ... очень плохо знаком с SQL.

Ответы [ 2 ]

2 голосов
/ 21 апреля 2019

Вам необходимо присоединить таблицу person дважды к таблице message:

select s.name, ...
from message m
inner join person s on m.senderid = s.personid
inner join person r on m.receiverid = r.personid
where m.senderid = 1
0 голосов
/ 21 апреля 2019

Полагаю, вам это нужно:

SELECT 
person.first_name AS senderFirstName, 
(SELECT p2.first_name FROM person p2 WHERE p2.person_id = 
m.receiver_id)receiveFirstName
FROM person p , message m 
WHERE p.person_id = m.sender_id AND m.sender_id = 1;
...