2011-11-01 110 views
3

enter image description hereSQL選擇查詢不起作用。在ms訪問2010

這裏是我的兩個圖表和我的查詢。顯然你會看到一些參數名稱匹配。但我的查詢顯示爲沒有結果。這是爲什麼?

謝謝。

本書雖然此查詢是在2010年它也可以訪問取得了2003年和2007年

如果你不能閱讀詳細查詢。只是放大此網頁

UPDATEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE: **************************** 8

感謝所有的幫助,但我已經解決了我自己的方式。因爲即時通訊這樣做的工作,我需要它做得很快,沒有太多的時間來德拉爲什麼訪問修剪不工作=(...我仍然不知道爲什麼。那一個沒有試用空間,只有我從另一個表格上載過的參數表格,這個表格是一個excel文件和99行的,

我回到了原始的excel文件。列和粘貼特殊值來擺脫公式,它仍然有空間!!這是一個修剪功能上的錯誤或什麼?

反正反而我用a = left(cell,len(cell)-1 )擺脫一個trailign spac e

然後重新加載excel參數表,現在它的工作。冗長的故事,但。如果有人對TRIM爲什麼不起作用有另外的建議,請解釋一下。我使用了LTRIM RTRIM。兩者在一起,只是TRIM

+1

由於尾隨空格,可能(MS Access中可能不會像在SQL Server中那樣忽略它們)? –

+1

哇,在11m行訪問大桌!這是一個鏈接表嗎?我懷疑Andriy M是對的。好奇你是否得到相同的結果,如果你使用「..從參數可以作爲t1內部連接t1_sourcetable作爲t2在t1.parameter_name = t2.parameter_name ..」? –

+0

同樣的結果大聲笑。但我也很好奇,並嘗試過。不,它不是一個鏈接表謝天謝地。 – Chaostryder

回答

2

在對@flayto的回覆中,你說過*表明在ParameterTable中的每個Parameter_Name值後面都有一個尾隨空格,但我試着修剪它,它確實表示它更新了該表中的所有條目,但是一個空間立刻不會消失!*「

有幾次我已將Excel電子表格中的一系列單元格複製到Access表格中。 Access中的數據包含我期望的文本後面的不可見尾隨字符。由於這些字符不是空格,它們不會被Trim()函數刪除。查看Paramater_Name值後的實際情況。

SELECT 
    Parameter_Name, 
    Len(Parameter_Name) AS Length_of_Parameter_Name 
    Asc(Right(Parameter_Name, 1)) AS rightmost_character 
FROM ParameterTable; 

修復將取決於您找到的內容。例如,如果總是有一個且只有一個不必要的字符,你可以用這個UPDATE語句丟棄:

UPDATE Parameter_Table 
SET Parameter_Name = Left(Parameter_Name, Len(Parameter_Name) -1); 

無論UPDATE你試試,確保備份數據庫首先在以防出錯。

+0

謝謝漢斯。另見@彼得勳爵的評論。你們兩個都有正確的主意,但它看起來像一個沒有的空間。並且您提供的查詢確實有效。與我的Excel公式一樣,但在訪問中。我不知道他們有相同的功能哈哈。非常感謝。 – Chaostryder

1

因爲你比較ParameterTable.Full_NameT1_SourceTable.Parameter_Name

您應該比較ParameterTable.Parameter_NameT1_SourceTable.Parameter_Name

***注意:當我看着這個時,我會離開它,但我懷疑前後空格(如其他幾個提到的那樣)。

***可能的其他解決方案:將其修改爲特定的內部連接。我從MS找到的鏈接並不是專門做不了你所做的,但他們都使用了明確的INNER JOIN語法。

所以,你可以嘗試:

SELECT T1.Full_Name, T2.Parameter_Name 
FROM ParameterTable T1 
INNER JOIN T1_SourceTable T2 
    ON T1.Parameter_Name = T2.Parameter_Name 

這不應該,因爲據我所知,真正改變任何東西 - 但是,根據我發現的鏈接,你可以嘗試一下。

+1

...但在他的查詢中,他已經在使用'WHERE T1.Parameter_Name = T2.Parameter_Name' ... – Marco

+0

Whoops-誤讀它。看起來像是說t1.Full_Name ...等待更新。 – AllenG

+0

嗨你是我跑你的查詢和同樣的問題沒有結果=( – Chaostryder

1

您確定字段值中沒有前導或尾隨空格嗎?嘗試使用LTRIM(RTRIM(T1_SourceTable.Parameter_Name))中的LTRIM/RTRIM來包裝每個字段,以確保這不是問題。

+0

你好,結果是在ParameterTable中的每個Parameter_Name值後面有一個尾隨空格,但我試着修剪它確實表示它更新了該表中的所有條目,一個空間sitll不會消失!可能是什麼問題? – Chaostryder

1

如果您的表已鏈接,並且基礎數據類型是char而不是varchar,那麼即使在您認爲已將其修剪後,它仍將爲空白填充。您必須更改基礎數據類型或加入trim(parameter_name),這將很昂貴!

+0

嘿,沒有我的參數表沒有鏈接,所有的數據類型都在(嘗試尾隨空格到目前爲止沒有運氣 – Chaostryder

+1

依次從每個表中依次選擇parameter_name,len(parameter_name),trim(parameter_name),len(trim(parameter_name))(限制在頂端,例如從你的大桌子100個),並看看你得到什麼? –

+0

len(field)或len(trim(field))最終給我一個數字和相同的n所以修剪沒有任何訪問..我不知道爲什麼,但我已經解決了我的問題,並將其更新到問題謝謝 – Chaostryder