2014-02-11 33 views
1

我有下面的查詢但是我不確定如何返回沒有標誌屬性的值。我想type.Property <> 'Flag'但是沒有返回結果,即便是有一些不具有標誌屬性Microsoft Access SQL查詢不存在的屬性

SELECT DISTINCT o.ea_guid as CLASSGUID, o.Object_Type as CLASSTYPE, o.name as Name 
FROM ((t_object as o 
     INNER JOIN t_objectproperties as location 
     ON o.Object_ID = location.Object_ID) 
     INNER JOIN t_objectproperties as type 
     ON o.Object_ID = type.Object_ID) 
WHERE location.Property = 'Location' 
    AND location.Value = 'Queens' 
    AND type.Property = 'Flag' 
    ORDER BY o.name ASC 
+0

你可能會與type.Property行IS NULL列是否允許空值。 – NoChance

+0

@Emmad Kareem - 它試過,但是沒有奏效 – PeanutsMonkey

+0

從WHERE開始測試。看看你有什麼價值。通過指定Select * from ... Where(Type.Property不是null和type.Property ='Flag')和location.Value ='Queens'和location.Property ='Location' – NoChance

回答

2

我不清楚你到底想要什麼。這應該給你行type.Property'Flag'以外的任何東西,包括空值。

AND Nz(type.Property, '') <> 'Flag' 

如果您要運行從Access應用程序會話之外的查詢,使用IIf代替Nz

AND IIf(type.Property Is Null, '', type.Property) <> 'Flag' 

如果你想只有那些行,其中type.Property是空...

AND type.Property Is Null 
+0

我試過所有這些查詢,他們返回的結果仍然具有標誌屬性,但最後一個查詢返回沒有值的例外。我想要的是沒有標誌屬性的元素。 – PeanutsMonkey

1

使用type.Property IS NULL如果值爲需求爲空進行測試記錄。 SQL中不存在null的平等測試。

+0

雖然我得到錯誤'語法錯誤(操作員缺失) – PeanutsMonkey

+0

''[NOT]'表示該標記是可選的。我不清楚你是否需要空值,或者是否需要空值。要麼刪除整個標記,要麼刪除封閉的[]括號。如果該字段被定義爲不允許空值,則空字段可能是空字符串。根據字段是否用空格填充,使用'type.Property ='''或'type.Property ='''。 – Pekka

+0

'type.Property IS NOT NULL'起作用,但它返回帶有flag屬性的結果。我只想要那些沒有標誌屬性 – PeanutsMonkey