-1

我没有收到错误消息,但无论我选择什么,我似乎都只得到 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]);
    }
}

如果我在 fn 函数中使用 console.log(retVal),我仍然可以按预期获得我的文本墙。但在 FOR 语句中,我只得到前 5 条记录。嗯,我敢打赌,我现在正在头撞菜鸟的错误。:/

4

2 回答 2

0

完全取决于你想要什么,但这里有一个带有维恩图的备忘单。http://www.codeproject.com/KB/database/Visual_SQL_Joins/Visual_SQL_JOINS_orig.jpg以便更合乎逻辑地查看您在做什么。

于 2015-06-10T18:30:03.570 回答
-1

哇,我发现了我的问题。真的很尴尬,SQL是正确的,我在数我的json文件中的列数,每次都返回5。很抱歉浪费了人们的时间。非常感谢您的反馈。从某种意义上说,我专注于让我的 sql 语句出错,因为我不擅长这些,所以你的反馈很有帮助。我从来没有想过我仍然会遇到像这样的菜鸟错误。

i<Object.keys(obj.result[0]).length

需要是

i<Object.keys(obj.result).length
于 2015-06-11T08:39:33.657 回答