2015-06-10 24 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