2015-06-10 25 views
0

我没有收到错误消息,但无论我选择什么,我似乎都只能得到5个结果,所以这让我相信我的SQL语句有问题。我使用node.js冗长的连接到sql 2008 r2数据库。以前的陈述有效,但是这是一个简单的select语句,带有发布日期where子句。我知道列名中有空格,这不是很好的做法,但是我没有办法做到这一点,因为Navision使用数据库。通常没有换行符,我只是这样做,让它看起来更有序。这个LEFT OUTER JOIN语句看起来是否正确?

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条记录。嗯,我敢打赌,我目前正在迎击新秀的错误。 :/

+0

我们不知道你的数据。你想要回来多少行?显示一些表结构和示例数据或创建一个SQLFiddle如果你想得到一个很好的答案。 –

+0

你可能在'OR'上使用'AND'吗?从句法上看,一切看起来都正确 –

+0

如果您离开where子句,但删除左连接(以及“select”中的最后一列),您会返回多少行?如果它也是5,那么加入不是问题。 – APH

回答

0

哇,我发现我的问题。这真的很尴尬,SQL是正确的,我正在计算我的json文件中的列数,每次返回5个。对不起浪费人们的时间。非常感谢您的反馈。从某种意义上说,我很注意让我的sql语句错误,因为我不擅长这些,所以您的反馈很有帮助。我从来没有想到,我仍然可能会遇到像这样的新秀错误。

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

必须

i<Object.keys(obj.result).length