从四个关系表创建第五个表

时间:2017-07-22 08:13:14

标签: sql tsql

我有以下四个表格。表格chat_message_joinmessage通过message_id相关联。其他两个表通过handle_id

相关联
+------------------------+  
| chat_message_join      |  
+------------------------+  
| chat_id                |  
| message_id             |  
+------------------------+  

+------------------------+  
| chat_handle_join       |  
+------------------------+  
| chat_id                |  
| handle_id              |  
+------------------------+

+------------------------+  
| message                |  
+------------------------+  
| message_id             |  
| text                   |  
+------------------------+

+------------------------+  
| handle                 |  
+------------------------+  
| handle_id              |  
| phone                  |  
+------------------------+

现在我想要一个第五个表,如下所示,TSQL语句应该是什么?

+------------------------+  
| flat_message           |  
+------------------------+  
| phone.                 |  
| text                   |  
+------------------------+

2 个答案:

答案 0 :(得分:1)

您可以使用into clause创建5 th 表,其中包含以下select语句:

select     h.phone, 
           m.text
into       flat_message
from       handle h
inner join chat_handle_join chj
        on chj.handle_id = h.handle_id
inner join chat_message_join cmj
        on cmj.chat_id = chj.chat_id
inner join message m
        on m.message_id = cmj.message_id;

rextester.comsqlfiddle.com上看到它。

答案 1 :(得分:1)

明确以下几点: 您是否要在第5个表中填充其他表中的数据(仅限于您的情况下的电话和文本)? 或者您想在运行时使用这两个字段(电话和文本)创建第5个表?

用于插入数据你可以在下面使用:

INSERT INTO flat_message
SELECT h.phone, m.text
FROM chat_message_join  as cmj
inner join chat_handle_join as chj on cmj.chat_id = chj.chat_id
inner join message as m  on cmj.messageid = m.messageid
inner join handle as h on h.handleid = chj.handleid