2013-12-17 157 views
0

我正在使用access作爲我的db,並且無法嘗試讓我的查詢選擇正確的數據。目前我的查詢似乎是返回表中的所有記錄時真的在WHERE子句中這個特殊的價值,應該只返回1.從多個表中選擇數據

的想法是使用基於表「框請求」值在WHERE子句中,並使用這些值從「Boxes」表中提取數據。如果有人能指出我的新手錯誤,我將不勝感激。我想補充一點,我繼承了這個數據庫,並沒有選擇來改變它。非常感謝

我的數據庫設置如下。

請盒

請求沒有

CustRef

sql = "SELECT [Request Boxes].[Request no], [Request Boxes].Box, Boxes.Box, Boxes.CustRef " & 
        "FROM [Request Boxes], Boxes WHERE [Request Boxes].[Request no] = '" & item & "'" 

更新的代碼:

sql = "SELECT [Request Boxes].[Request no], [Request Boxes].Box, Boxes.Box, Boxes.CustRef " & 
        "FROM [Request Boxes] INNER JOIN Boxes ON [Request Boxes].Box = Boxes.Box " & 
        "WHERE ((([Request Boxes].[Request no]) = '" & item & "')" & 
        "AND ([Request Boxes].[Customer] = '" & customer2 & "') AND (Boxes.Status = '" & status & "'))" 

回答

1

你與你的FROM條款加入兩個表...

FROM [Request Boxes], Boxes 

這意味着你會得到所有的Boxes行,貼在Request Boxes你正確選擇的行。爲了挑選出Boxes行匹配,添加ON條款的FROM ...

FROM [Request Boxes], Boxes ON [Request Boxes].[Box] = [Boxes].[Box] 

這將確保只有匹配Boxes行連接到[Request Boxes]行。

+0

布賴恩,只有1個問題。由於此行(Boxes.Status ='「&status&」'),我的更新代碼中查詢失敗。如果我刪除線,那麼它顯示正常。我已調試,我知道正確的值正在通過。我哪裏錯了。謝謝 – user1532468

+0

一個小建議,在vb.net或C#中使用Sql Queries並不好。將這些查詢寫入SQL Server的存儲過程並從您的代碼中調用它們總是更好。 – Hoh

+0

@ user1532468,你的狀態是一個數字嗎?如果是這樣,你不需要單引號。 –