这个 LEFT OUTER JOIN 语句看起来正确吗?
does this LEFT OUTER JOIN statement look correct?
我没有收到错误消息,但无论我选择什么,我似乎只得到 5 个结果,所以这让我相信我的 SQL 语句有问题。我使用 node.js 连接到 sql 2008 r2 数据库很乏味。以前的语句有效,但那是一个带有发布日期 where 子句的简单 select 语句。我知道我的列名中有空格,这不是好的做法,但我对此无能为力,因为数据库由 Navision 使用。通常没有换行符,我这样做只是为了让你们看起来更有秩序。
SELECT
TA.[Amount],
TA.[Posting Date],
TA.[Entry No_],
TA.[Document No_],
TB.[Salesperson Code]
FROM [ShowTex Belgie NV$G_L Entry] as TA
LEFT OUTER JOIN [ShowTex Belgie NV$Sales Invoice Header] as TB
ON TA.[Document No_]=TB.[No_]
WHERE TA.[Posting Date]>'05/01/2015'
AND TA.[Document Type]='2'
AND TA.[Gen_ Posting Type]='2'
奇怪的是 SQL 原来不是问题。 它是从 JSON.stringify 到 JSON.parse 的转换。我确定我之前已经成功测试过这个。但也许我疏忽了。无论如何我的代码看起来像这样。当我 Console.log(retVal) 时,数据看起来仍然正确,大约 100 条记录符合预期。
retVal = JSON.stringify({result:dataSet});
fn(retVal);
function fn(retVal){
var obj = JSON.parse(retVal);
for(var i = 0; i<Object.keys(obj.result[0]).length;i++){
console.log(obj.result[i]);
}
}
如果我 console.log(retVal) 在 fn 函数中,我仍然会按预期获得文本墙。但在 FOR 语句中我只得到前 5 条记录。嗯,我敢打赌我现在正在用头撞一个菜鸟错误。 :/
完全取决于您想要什么,但这里有一个带有维恩图的作弊 sheet。 http://www.codeproject.com/KB/database/Visual_SQL_Joins/Visual_SQL_JOINS_orig.jpg 这样看你在做什么可能更合乎逻辑。
哇,我发现了我的问题。真尴尬,SQL 是正确的,我正在计算我的 json 文件中的列数,每次都返回 5。抱歉浪费人们的时间。非常感谢您的反馈。从某种意义上说,这很有帮助,因为我不擅长这些,所以你的反馈很有帮助。我从来没有想过我还会 运行 犯这样的菜鸟错误。
i<Object.keys(obj.result[0]).length
需要
i<Object.keys(obj.result).length
我没有收到错误消息,但无论我选择什么,我似乎只得到 5 个结果,所以这让我相信我的 SQL 语句有问题。我使用 node.js 连接到 sql 2008 r2 数据库很乏味。以前的语句有效,但那是一个带有发布日期 where 子句的简单 select 语句。我知道我的列名中有空格,这不是好的做法,但我对此无能为力,因为数据库由 Navision 使用。通常没有换行符,我这样做只是为了让你们看起来更有秩序。
SELECT
TA.[Amount],
TA.[Posting Date],
TA.[Entry No_],
TA.[Document No_],
TB.[Salesperson Code]
FROM [ShowTex Belgie NV$G_L Entry] as TA
LEFT OUTER JOIN [ShowTex Belgie NV$Sales Invoice Header] as TB
ON TA.[Document No_]=TB.[No_]
WHERE TA.[Posting Date]>'05/01/2015'
AND TA.[Document Type]='2'
AND TA.[Gen_ Posting Type]='2'
奇怪的是 SQL 原来不是问题。 它是从 JSON.stringify 到 JSON.parse 的转换。我确定我之前已经成功测试过这个。但也许我疏忽了。无论如何我的代码看起来像这样。当我 Console.log(retVal) 时,数据看起来仍然正确,大约 100 条记录符合预期。
retVal = JSON.stringify({result:dataSet});
fn(retVal);
function fn(retVal){
var obj = JSON.parse(retVal);
for(var i = 0; i<Object.keys(obj.result[0]).length;i++){
console.log(obj.result[i]);
}
}
如果我 console.log(retVal) 在 fn 函数中,我仍然会按预期获得文本墙。但在 FOR 语句中我只得到前 5 条记录。嗯,我敢打赌我现在正在用头撞一个菜鸟错误。 :/
完全取决于您想要什么,但这里有一个带有维恩图的作弊 sheet。 http://www.codeproject.com/KB/database/Visual_SQL_Joins/Visual_SQL_JOINS_orig.jpg 这样看你在做什么可能更合乎逻辑。
哇,我发现了我的问题。真尴尬,SQL 是正确的,我正在计算我的 json 文件中的列数,每次都返回 5。抱歉浪费人们的时间。非常感谢您的反馈。从某种意义上说,这很有帮助,因为我不擅长这些,所以你的反馈很有帮助。我从来没有想过我还会 运行 犯这样的菜鸟错误。
i<Object.keys(obj.result[0]).length
需要
i<Object.keys(obj.result).length