Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL查询不工作_Sql_Sql Server - Fatal编程技术网

SQL查询不工作

SQL查询不工作,sql,sql-server,Sql,Sql Server,我有四张桌子: SELECT [B_Key] ,[B_FiscalYear] ,[B_OrgCode] ,[B_SubObject] ,[B_Explanation] ,[B_CIPrefNo] ,[B_OrgBudgetAmt] ,[B_BudgetAmt] ,[B_Initials] FROM [NAOLI].[dbo].[BudgetTbl] SELECT [F_Fykey] ,[F_FiscalYear] ,[F_Year] FROM [NAOL

我有四张桌子:

SELECT [B_Key]
  ,[B_FiscalYear]
  ,[B_OrgCode]
  ,[B_SubObject]
  ,[B_Explanation]
  ,[B_CIPrefNo]
  ,[B_OrgBudgetAmt]
  ,[B_BudgetAmt]
  ,[B_Initials]
FROM [NAOLI].[dbo].[BudgetTbl]

SELECT [F_Fykey]
  ,[F_FiscalYear]
  ,[F_Year]
FROM [NAOLI].[dbo].[codeFiscalYearTbl]

SELECT [O_OrgKey]
  ,[O_OrgCode]
  ,[O_OrgDesc]
  ,[O_Divisions]
FROM [NAOLI].[dbo].[codeOrgCodeTbl]

SELECT [S_SubKey]
  ,[S_SubObject]
  ,[S_SubDescrip]
FROM [NAOLI].[dbo].[codeSubObjectTbl]
我需要将这些表中的不同信息组合在一起,以形成以下信息表:

   [B_FiscalYear]
  ,[O_OrgCode]
  ,[O_OrgDesc]
  ,[S_SubObject]
  ,[S_SubDescrip]
  ,[B_BudgetAmt]
  ,[B_Initials]
  ,[B_CIPrefNo]
  ,[B_OrgBudgetAmt]
我尝试了下面的查询,但它返回20750条记录中的0条。。我如何做到这一点?谢谢

SELECT [B_FiscalYear]
  ,[B_OrgCode]
  ,[O_OrgDesc]
  ,[B_SubObject]
  ,[S_SubDescrip]
  ,[B_BudgetAmt]
  ,[B_Initials]
  ,[B_CIPrefNo]
  ,[B_OrgBudgetAmt]

INTO dbo.BudgetsTbl
  FROM [BudgetTbl] BT, [codeFiscalYearTbl] FY, [codeOrgCodeTbl] OC, [codeSubObjectTbl] SO
WHERE BT.B_FiscalYear = FY.F_Year and BT.B_OrgCode = OC.O_OrgCode and BT.B_SubObject = SO.S_SubObject

正确的联接语法是:

SELECT [B_FiscalYear], [B_OrgCode], [O_OrgDesc], [B_SubObject], [S_SubDescrip],
       [B_BudgetAmt], [B_Initials], [B_CIPrefNo], [B_OrgBudgetAmt]
INTO dbo.BudgetsTbl
FROM BudgetTbl BT join
     codeFiscalYearTbl FY
     on BT.B_FiscalYear = FY.F_Year  join
     codeOrgCodeTbl OC
     on BT.B_OrgCode = OC.O_OrgCode join
     codeSubObjectTbl SO
     on BT.B_SubObject = SO.S_SubObject

可能有一个或多个查找表是空的。如果需要所有行,请在上述查询中将“联接”替换为“左外部联接”。

联接应如下所示:

SELECT [B_FiscalYear]
  ,[B_OrgCode]
  ,[O_OrgDesc]
  ,[B_SubObject]
  ,[S_SubDescrip]
  ,[B_BudgetAmt]
  ,[B_Initials]
  ,[B_CIPrefNo]
  ,[B_OrgBudgetAmt]
FROM BudgetTbl BT
JOIN codeFiscalYearTbl FY ON BT.B_FiscalYear = FY.F_Year
JOIN codeOrgCodeTbl OC ON BT.B_OrgCode = OC.O_OrgCode
JOIN codeSubObjectTbl SO ON BT.B_SubObject = SO.S_SubObject
你可以查看更多信息。
如果需要,还可以添加左连接

如果不知道数据是什么样子,这将是一个很难解决的问题。我建议从一个表中选择数据(从BudgetTbl开始),然后一次向结果中添加一个联接表,直到您发现哪个联接约束导致了数据的省略。确保您也选择了适当的联接方法(左、右等)。除了使用隐式
join
s(您应该使用适当的显式
join
s)之外,您的查询应该是可以的。您确定可以联接这些列上的表吗?执行查询时是否收到任何错误消息?还是只报告“受影响的0行”?(取决于您使用的SQL数据库的风格)非常感谢!如果需要左外连接,我将标记为答案。