简体   繁体   English

SQL 查询以组合来自 3 个不同表的列?

[英]SQL query to combine columns from 3 different tables?

So basically I have 3 differnet tables named member, phone_message and pc_message each with the following columns:所以基本上我有 3 个名为 member、phone_message 和 pc_message 的不同表,每个表都有以下列:

member = (id, cell_num) 
phone_message = (phone_num, content, received_at)
pc_message = (member_id, content, sent_at)

What i'm trying to do here is to list all the messages including both phone and pc that are received or sent for each member.我在这里要做的是列出为每个成员接收或发送的所有消息,包括电话和电脑。 To do that i need to combine those tables into one using SQL queries like JOIN and UNION.为此,我需要使用 SQL 查询(如 JOIN 和 UNION)将这些表合并为一个。 Any help?有什么帮助吗?

Try this;尝试这个;

select m.id as memberId, m.cell_num as phoneNumber, p.content, p.received_at as recieveDate from member m
inner join phone_message p on m.cell_num = p.phone_num
union
select m.id as memberId, m.cell_num as phoneNumber, pc.content, pc.sent_at as recieveDate from member m
inner join pc_message pc on m.id = pc.member_id

You can try below query, I have used inner join so that messages only sent by matching members will be diplayed.您可以尝试以下查询,我使用了内部联接,以便仅显示匹配成员发送的消息。 In addition to that, I have added one extra column as device which will identify whether the message is sent on phone or pc.除此之外,我添加了一个额外的列作为设备,它将识别消息是在手机上还是在电脑上发送。

select m.id as memberId, m.cell_num as phoneNumber, p.content as Message, p.received_at as recieveDate,'Phone' as device from member m
inner join phone_message p on m.cell_num = p.phone_num
union
select m.id as memberId, m.cell_num as phoneNumber, pc.content as Message, pc.sent_at as recieveDate,'PC' as device from member m
inner join pc_message pc on m.id = pc.member_id

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM