我在sql中构建一个查询,我收集有关销售交易的信息,我从中输入的两个表是CLIENT_NOTES。一个客户可以有任意数量的票据,但反之亦然。
目前我的查询如下:
SELECT client.name, client.email,..., client_notes.summary AS SUMMARY
FROM CLIENT client
LEFT JOIN CLIENT_NOTES client_notes ON client.CLIENT_ID = client_notes.CLIENT_ID
我还想为客户提供REFERENCE_NOTES.summary。同样,一个客户可以拥有任意数量的参考票据,但反之亦然。但是我想以这样的方式提取数据:所有client_notes.summary条目都显示给特定客户端,然后references_notes.summary条目显示给同一个客户端,直到转到下一个客户端,其中两个摘要都是显示在名为summary的同一列下。
这在sql中是否可行?
答案 0 :(得分:0)
您可以使用UNION ALL执行此操作。基本上两个选择语句一起粉碎。第一个获取client_notes,第二个获取reference_notes。有关UNION的一些注意事项是列的数量和顺序必须相同。数据类型也必须兼容。
--Get client_notes
SELECT client.name, client.email,..., client_notes.summary AS SUMMARY
FROM CLIENT client
LEFT JOIN CLIENT_NOTES client_notes ON client.CLIENT_ID = client_notes.CLIENT_ID
UNION ALL
--Get reference_notes
SELECT client.name, client.email,..., reference_notes.summary AS SUMMARY
FROM CLIENT client
LEFT JOIN REFERENCE_NOTES reference_notes ON client.CLIENT_ID = reference_notes.CLIENT_ID
ORDER BY client.name