繁体   English   中英

SQL 查询选择支持票的所有记录及其文件

[英]SQL query selects all records of support tickets along with their files

我在数据库中有 2 个表,其中一个用于支持工单,另一个表用于工单的上传文件,我的问题是我如何 select 所有工单及其上传的文件,即使是没有的工单一份文件。

我的 SQL 查询如下,但它显示有文件的票证,不显示没有文件的票证。

SELECT        
    dbo.tblTickets.id, dbo.tblTickets.uid, 
    dbo.tblTicketReplys.tsenderusername, 
    dbo.tblTicketReplys.tBody, dbo.tblTicketReplys.tdate, 
    dbo.tblTicketReplysAttachments.[fileName], 
    dbo.tblTicketReplysAttachments.fileLink,
    dbo.tblTicketReplysAttachments.fileSize
FROM    
    dbo.tblTickets
INNER JOIN
    dbo.tblTicketReplys ON dbo.tblTickets.id = dbo.tblTicketReplys.tid 
INNER JOIN
    dbo.tblTicketReplysAttachments ON dbo.tblTicketReplys.id = dbo.tblTicketReplysAttachments.repID
WHERE
    (dbo.tblTickets.[uid] = @uid)
    AND (dbo.tblTicketReplys.tid = @tid)
ORDER BY 
    dbo.tblTickets.id ASC

尝试使用LEFT JOIN

SELECT        
    dbo.tblTickets.id, dbo.tblTickets.uid, dbo.tblTicketReplys.tsenderusername, 
    dbo.tblTicketReplys.tBody, dbo.tblTicketReplys.tdate, dbo.tblTicketReplysAttachments.[fileName], 
    dbo.tblTicketReplysAttachments.fileLink,dbo.tblTicketReplysAttachments.fileSize
FROM    
    dbo.tblTickets
JOIN
    dbo.tblTicketReplys ON dbo.tblTickets.id = dbo.tblTicketReplys.tid 
LEFT JOIN
    dbo.tblTicketReplysAttachments ON dbo.tblTicketReplys.id = dbo.tblTicketReplysAttachments.repID
where (dbo.tblTickets.[uid]=@uid)AND(dbo.tblTicketReplys.tid=@tid)
order by dbo.tblTickets.id asc

您必须将 JOIN 更改为 LEFT JOIN 到 tblTicketReplysAttachments 的表:

LEFT JOIN
    dbo.tblTicketReplysAttachments ON dbo.tblTicketReplys.id = dbo.tblTicketReplysAttachments.repID
FROM dbo.tblTickets T1
    INNER JOIN
    dbo.tblTicketReplys T2 ON dbo.tblTickets.id = dbo.tblTicketReplys.tid
    INNER JOIN dbo.tblTicketReplysAttachments T3 ON dbo.tblTicketReplys.id = dbo.tblTicketReplysAttachments.repID

只有那些票会在T1.id = T2.ti d 和T2.id = T3.repID的地方列出,除非T2.tid = T2.id你没有将第一张桌子加入第三张桌子。

来到只获取带有附件的票证的主要问题 如果您的 T3(保存附件数据)只有那些有附件的票证,那么由于您使用的是 INNER JOIN,您将只会获得带有附件的票证。 你可以用LEFT JOIN替换它,这会给你
1. T1 的所有行
2. 符合 T2 & T3 条件的所有行

暂无
暂无

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

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