我有以下四个表格。表格chat_message_join
和message
通过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 |
+------------------------+
答案 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.com和sqlfiddle.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