2012-06-19 20 views
0

我有一個在sql中創建的表。但在我的應用我使用的INFORMATION_SCHEMA執行一些任務,我很驚訝,這不是我的表定義同步,即SQL列存在於表中但不在INFORMATION_SCHEMA中

代碼

SELECT SatComRatingTableID   -- This is working 
FROM dbo.tblSatComRatingTable 


SELECT f.field , 
     c.COLUMN_NAME 
FROM dbo.wiztbl_Fields f 
     LEFT JOIN INFORMATION_SCHEMA.COLUMNS c ON c.COLUMN_NAME = f.Field 
                AND c.TABLE_NAME = 'tblSatComBillingPackage' 
WHERE f.DataObjectID = 2717 
     AND COLUMN_NAME IS NULL 

第二查詢返回:

SatComRatingTableID NULL 

發生了什麼以及如何解決? 在此先感謝

編輯

注:該tblSatComBillingPackage包含FK場SatComRatingTableID。我使用的領域得到INFORMATION_SCHEMA信息...

+0

因爲要查詢防錯表? –

回答

2

你查詢了錯誤的表,似乎過濾結果排除成功:

SELECT SatComRatingTableID 
FROM dbo.tblSatComRatingTable --<--This 


SELECT f.field , 
     c.COLUMN_NAME 
FROM dbo.wiztbl_Fields f 
     LEFT JOIN INFORMATION_SCHEMA.COLUMNS c ON c.COLUMN_NAME = f.Field 
      AND c.TABLE_NAME = 'tblSatComBillingPackage' --<-- Does't match this 
WHERE f.DataObjectID = 2717 
     AND COLUMN_NAME IS NULL --<-- And this seems wrong also 
+0

我忘了提及SatcomBillingPackage有一個SatComRatingTableID FK,我正在使用該值從Information_Schema獲取相關信息... – Boomer

+0

@Boomer - 不,你已經在那裏失去了我。你有一個針對'tblSatComRatingTable'的頂部查詢。然後,您查詢'INFORMATION_SCHEMA'作爲*不同*表('tblSatComBillingPackage')。你有一個'WHERE'子句過濾器,似乎是用來過濾掉任何成功的匹配。 –

+0

對不起,對than支持。表BillingPackage包含一個名爲tblSatComRatingTableID的字段,當我嘗試從INFORMATION_SCHEMA獲取該列時,它給了我NULL。 – Boomer

相關問題