这个LEFT OUTER JOIN语句看起来是否正确?

时间:2015-06-10 18:27:52

标签: sql sql-server node.js tedious

我没有收到错误消息,但无论我选择什么,我似乎只得到5个结果,所以这让我相信我的SQL语句有问题。我是usint 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条记录。嗯,我打赌我现在正处理一个新手的错误。 :/

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:-1)

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

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

需要

i<Object.keys(obj.result).length
相关问题