[英]call same primary key used on two foreign keys to display different rows/results
用户既可以是信件的发送者,也可以是接收者(他们发送一封信件,并且可以回复一封信件)。 因此,用户都存储在我的 tblMembers 中,由 mem_id_PK 区分。 但是,我也想获取用户的用户名。
我的SQL如下:
select tblLetters.letter_id_PK,
tblLetters.letter_body,
tblLetters.letter_createdDate,
tblLetters.FK_member_id_writer AS 'Sender',
tblLetters.FK_member_id_adviser AS 'Receiver',
tblMembers.mem_username AS 'Sender Name',
tblMembers.mem_username AS 'Receiver Name'
from tblLetters
inner join tblMembers on tblLetters.FK_member_id_writer = tblMembers.mem_id_PK
-- inner join tblMembers on tblLetters.FK_member_id_adviser = tblMembers.mem_id_PK
返回:
letter_id_PK letter_body letter_createdDate Sender Receiver Sender Name Receiver Name
1 Hello how are you? 2020-11-17 16:57:24.420 3 2 Sally Sally
期待:
letter_id_PK letter_body letter_createdDate Sender Receiver Sender Name Receiver Name
1 Hello how are you? 2020-11-17 16:57:24.420 3 2 Sally John
我的假设是将我的 FK 设置为 mem_username,但我无法像所见的那样与众不同。
您需要使用表名别名:
select tblLetters.letter_id_PK,
tblLetters.letter_body,
tblLetters.letter_createdDate,
tblLetters.FK_member_id_writer AS 'Sender',
tblLetters.FK_member_id_adviser AS 'Receiver',
sender.mem_username AS 'Sender Name',
receiver.mem_username AS 'Receiver Name'
from tblLetters
inner join tblMembers as sender on
tblLetters.FK_member_id_writer = sender.mem_id_PK
inner join tblMembers as receiver on
tblLetters.FK_member_id_adviser = receiver.mem_id_PK
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.