2012-06-21 69 views
0
SELECT * FROM agency 
INNER JOIN TUser 
[agency].[dbo].[Matrix_Branch_ID]=[TUser].[dbo].[client_id] 
Microsoft SQL Server Managment Studio gives me: 

SQL Server Management Studio中給了我:爲什麼不會這個SQL語句運行

消息170,級別15,狀態1,行3
線路3:附近有語法錯誤。「。

編輯

SELECT * FROM agency 
INNER JOIN TUser 
ON dbo.agency.Matrix_Branch_ID=dbo.TUser.client_id 

SQL Server Management Studio中固定的語法錯誤後,現在給我:

消息208,級別16,狀態1,行1
無效的對象名稱'agency'。
消息208,級別16,狀態1,行1
無效的對象名稱'TUser'。

+0

爲什麼代理和tuser之前dbo? – Phil

+1

如果你在SSMS中運行這個功能 - 你在**正確的**數據庫中;包含這兩個表的那個? –

+0

@marc_s你是對的。你如何告訴/指定你在Microsoft Management Studio中查詢的數據庫,因爲在對象瀏覽器中,我在正確的數據庫中擴展了右表。既然你的答案解決了問題,如果你發佈它,我會接受它作爲正確的 – Celeritas

回答

7

如果您在SSMS中運行此項操作 - 您是否在正確的數據庫中;包含這兩個表的那個?

enter image description here

你可以看到你在當一個查詢窗口是活動的是,當前的數據庫 - 無論是在工具欄上下拉,以及查詢窗口的腳註。

5

你缺少ON關鍵字見<joined table>語法FROM (Transact-SQL)

<joined_table> ::= { 
    <table_source> <join_type> <table_source> ON <search_condition> 
    | <table_source> CROSS JOIN <table_source> 
    | left_table_source { CROSS | OUTER } APPLY right_table_source 
    | [ (] <joined_table> [) ] } 

另外,[dbo]之間有什麼我假定是表和字段的名稱是錯誤的。見Using Identifiers As Object Names

這應該工作

SELECT * FROM agency 
INNER JOIN TUser 
ON [agency].[Matrix_Branch_ID]=[TUser].[client_id] 
+0

我收到一個新錯誤(請參閱原始文章)。我也嘗試過你的確切語法和相同的錯誤。 – Celeritas

+0

有沒有一個名爲TUser的表?你需要爲表名寫dbo.TUser嗎? –

+0

@Celeritas你是否從'SELECT SCHEMA_NAME(schema_id)得到結果,從sys.objects得到名稱IN('agency','TUser')' –

2

你是否選擇了正確的數據庫? SQL Server默認使用master數據庫,這不是您可能需要的數據庫。

您可能想要限定表格上的模式,而不是您正在選擇的項目。例如:

Use [Database_name] 

SELECT * FROM dbo.agency 
INNER JOIN dbo.TUser ON agency.Matrix_Branch_ID=TUser.client_id 
+1

幹得好,愚蠢的30秒...... –

相關問題