SQL脚本未加入结果
我在让这个SQL脚本将两个表连接在一起时遇到了一个问题,我可以执行它,它将显示第一部分的结果(AccountID、AuditDate..等等),但它不会连接到内部select语句 我已经通过抽查来验证数据库中是否有匹配的数据 我搞砸了什么SQL脚本未加入结果,sql,Sql,我在让这个SQL脚本将两个表连接在一起时遇到了一个问题,我可以执行它,它将显示第一部分的结果(AccountID、AuditDate..等等),但它不会连接到内部select语句 我已经通过抽查来验证数据库中是否有匹配的数据 我搞砸了什么 Select AccountID, AuditDate, SourceVersion From Audit Left join ( Select A.PrinterAuditID, A.AuditID, A.SerialNr, A.PageCountT
Select AccountID, AuditDate, SourceVersion
From Audit
Left join (
Select A.PrinterAuditID, A.AuditID, A.SerialNr, A.PageCountTotal,a.PageCountColor, A.PageCountMono
from InvalidPrinterAudit A
where A.DeviceID = 90757
) InvalidPrinterAudit on InvalidPrinterAudit.AuditID = Audit.AuditID
您在外部查询中选择的列少于在内部查询中选择的列 如果希望在结果集中返回它们,请将它们包含在外部:
Select AccountID, AuditDate, SourceVersion, PrinterAuditID, SerialNr
From Audit
Left join (
Select A.PrinterAuditID, A.AuditID, A.SerialNr, A.PageCountTotal,a.PageCountColor, A.PageCountMono
from InvalidPrinterAudit A
where A.DeviceID = 90757
) InvalidPrinterAudit on InvalidPrinterAudit.AuditID = Audit.AuditID
您在外部查询中选择的列少于在内部查询中选择的列 如果希望在结果集中返回它们,请将它们包含在外部:
Select AccountID, AuditDate, SourceVersion, PrinterAuditID, SerialNr
From Audit
Left join (
Select A.PrinterAuditID, A.AuditID, A.SerialNr, A.PageCountTotal,a.PageCountColor, A.PageCountMono
from InvalidPrinterAudit A
where A.DeviceID = 90757
) InvalidPrinterAudit on InvalidPrinterAudit.AuditID = Audit.AuditID
这里发生了几件事 One:为了在结果集中包含字段,这些字段必须包含在查询的
选择部分中:
Select AccountID, AuditDate, SourceVersion, InvalidPrinterAudit.PrinterAuditID, InvalidPrinterAudit.AuditID, InvalidPrinterAudit.SerialNr, InvalidPrinterAudit.PageCountTotal,InvalidPrinterAudit.PageCountColor, InvalidPrinterAudit.PageCountMono
From Audit
Left join (
Select A.PrinterAuditID, A.AuditID, A.SerialNr, A.PageCountTotal,a.PageCountColor, A.PageCountMono
from InvalidPrinterAudit A
where A.DeviceID = 90757
) InvalidPrinterAudit on InvalidPrinterAudit.AuditID = Audit.AuditID
Two:这里不需要子查询。如果您需要从一个单独的表或其他地方聚合结果,子查询是很好的,但是在这里您可以使用左外部联接并完成它
Select AccountID, AuditDate, SourceVersion, InvalidPrinterAudit.PrinterAuditID, InvalidPrinterAudit.AuditID, InvalidPrinterAudit.SerialNr, InvalidPrinterAudit.PageCountTotal,InvalidPrinterAudit.PageCountColor, InvalidPrinterAudit.PageCountMono
From Audit
Left OUTER JOIN InvalidPrinterAudit
ON InvalidPrinterAudit.AuditID = Audit.AuditID
AND InvalidPrinterAudit.DeviceID = 90757
这将在应用联接之前,将DeviceID=90757
过滤器应用到您的InvalidPrinterAudit
,因此您仍将获得所有Audit
记录,然后仅获得与该设备id匹配的InvalidPrinterAudit
记录。这里发生了一些事情
One:为了在结果集中包含字段,这些字段必须包含在查询的选择部分中:
Select AccountID, AuditDate, SourceVersion, InvalidPrinterAudit.PrinterAuditID, InvalidPrinterAudit.AuditID, InvalidPrinterAudit.SerialNr, InvalidPrinterAudit.PageCountTotal,InvalidPrinterAudit.PageCountColor, InvalidPrinterAudit.PageCountMono
From Audit
Left join (
Select A.PrinterAuditID, A.AuditID, A.SerialNr, A.PageCountTotal,a.PageCountColor, A.PageCountMono
from InvalidPrinterAudit A
where A.DeviceID = 90757
) InvalidPrinterAudit on InvalidPrinterAudit.AuditID = Audit.AuditID
Two:这里不需要子查询。如果您需要从一个单独的表或其他地方聚合结果,子查询是很好的,但是在这里您可以使用左外部联接并完成它
Select AccountID, AuditDate, SourceVersion, InvalidPrinterAudit.PrinterAuditID, InvalidPrinterAudit.AuditID, InvalidPrinterAudit.SerialNr, InvalidPrinterAudit.PageCountTotal,InvalidPrinterAudit.PageCountColor, InvalidPrinterAudit.PageCountMono
From Audit
Left OUTER JOIN InvalidPrinterAudit
ON InvalidPrinterAudit.AuditID = Audit.AuditID
AND InvalidPrinterAudit.DeviceID = 90757
这将在应用联接之前将DeviceID=90757
过滤器应用于您的InvalidPrinterAudit
,因此您仍将获得所有Audit
记录,然后仅获得与该设备ID匹配的InvalidPrinterAudit
记录。尝试此操作,选择Audit.AccountID,Audit.AuditDate,Audit.SourceVersion、A.PrinterAuditID、A.AuditID、A.SerialNr、A.PageCountTotal、A.PageCountColor、A.PageCountMono从Audit作为Audit离开将InvalidPrinterAudit作为on连接(A.InvalidPrinterAudit=Audit.AuditID),其中A.DeviceID=90757内部查询是否返回任何内容?应该没关系。是的,内部选择将返回数据,谢谢RAM!!!你让它工作了,我不得不修改一个列名,但现在它工作了这是最后一个对我有效的代码谢谢@Ram Select Audit.AccountID,Audit.AuditDate,Audit.SourceVersion,a.PrinterAuditID,a.AuditID,a.SerialNr,a.PageCountTotal,a.PageCountColor,a.PageCountMono从Audit作为Audit左加入InvalidPrinterAudit作为打开(A.AuditID=Audit.AuditID)如果A.DeviceID=90757尝试此操作,请选择Audit.AccountID、Audit.AuditDate、Audit.SourceVersion、A.PrinterAuditID、A.AuditID、A.SerialNr、A.PageCountTotal、A.PageCountColor、A.PageCountMono作为审核左键将InvalidPrinterAudit作为打开(A.InvalidPrinterAudit=Audit.audited)其中A.DeviceID=90757内部查询是否返回任何内容?应该无关紧要。是的,内部选择将返回数据,谢谢你RAM!!!你让它工作了,我必须修改一个列名,但它现在工作了这是对我有效的最后代码谢谢你@RAM Select Audit.AccountID,Audit.AuditDate,Audit.SourceVersion,A.PrinterAuditID,A.AuditID、A.SerialNr、A.PageCountTotal、A.PageCountColor、A.PageCountMono作为审核从审核到左加入InvalidPrinterAudit作为开启(A.Audited=Audit.Audited)如果A.DeviceID=90757不起作用,那么上面评论中发布的Ram起作用了现在你提到它,问题是为什么在子选择上左键连接。这不起作用,上面评论中发布的Ram起作用了现在你提到它,问题是为什么在子选择上左键连接。