2017-02-15 1 views
0

Von MS Access-Abfrage-Designer, ich baue bisher eine funktionierende Abfrage.Wie erstellt man einen "Not Having" SQL-Befehl

Neue Anforderungen kommt hinzu, wo die Ergebnisse der Abfrage weiter gefiltert werden müssen.

SELECT Sum(0) AS [#], Contacts.COMPANY, Proposals.[PROP NAME], Projects.[START DATE], Projects.DESCRIPTION, Projects.[TOTAL FEE], Projects.[PROJ ID], Contacts.[FULL NAME], Projects.COUNTRY 
FROM (Contacts INNER JOIN Proposals ON Contacts.[CON ID] = Proposals.[CON ID]) INNER JOIN Projects ON Proposals.[PROP ID] = Projects.[PROP ID] 
GROUP BY Contacts.COMPANY, Proposals.[PROP NAME], Projects.[START DATE], Projects.DESCRIPTION, Projects.[TOTAL FEE], Projects.[PROJ ID], Contacts.[FULL NAME], Projects.COUNTRY, Projects.[PROJECT STATUS] 
HAVING ((((Proposals.[PROP NAME]) Like "*" & [forms]![TempUI]![SrchText] & "*")) AND ((Projects.[START DATE]) Between [Forms]![TempUI]![txtRptDateStart] And [Forms]![TempUI]![txtRptDateEnd]) AND ((Projects.[PROJECT STATUS]) Like [forms]![TempUI]![cmb_scope])); 

Diese Abfrage wird die Datensätze filtern basierend auf dem Inhalt von srchtxt (Textbox)

Lassen Sie uns das Ergebnis übernehmen, wenn srchtxt das Wort „Feuer“ enthalten diese

Prop Name 
---------- 
Fire Pump repair 
Fire damage repair 
Wall restructure due to building fire 
Fire water pump 
Roof repair due to fire 

sind Jetzt brauche ich um dies weiter zu filtern, um das Wort "Pumpe" auszuschließen, weil die Feuerlöschpumpe eine Maschine ist und nichts mit Strukturen zu tun hat, die durch Feuer beschädigt werden

Ich habe versucht,zu verwendenNOT LIKE wie diese

HAVING ((((Proposals.[PROP NAME]) Like "*" & [forms]![TempUI]![SrchText] & "*") AND ((Proposals.[PROP NAME]) NOT LIKE [forms]![TempUI]![txtRPTexlude])) AND ((Projects.[START DATE]) Between [Forms]![TempUI]![txtRptDateStart] And [Forms]![TempUI]![txtRptDateEnd]) AND ((Projects.[PROJECT STATUS]) Like [forms]![TempUI]![cmb_scope])); 

Aber es keine Ergebnisse zurück.

Jede Idee, was ist die richtige HAVING-Klausel, um alle Datensätze mit dem Wort "Pumpe" aus den Ergebnissen auszuschließen?

Dank

+0

vielleicht ist es Maske wegen fehlender zu nutzen versuchen? 'HAVING ((((Vorschläge. [PROP NAME]) Wie" * "& [Formulare]! [TempUI]! [SrchText] &" * ") UND ((Vorschläge. [PROP NAME]) NICHT WIE" * "& [forms]! [TempUI]! [txtRPTexlude] & "*")) UND ((Projekte. [START DATUM]) Zwischen [Forms]! [TempUI]! [txtRptDateStart] und [Forms]! [TempUI]! [txtRptDateEnd ]) AND ((Projects. [PROJECT STATUS]) Wie "*" & [forms]! [TempUI]! [Cmb_scope] & "*")); ' – user5226582

+0

immer noch leeres Ergebnis – Wayne

+2

Alle Ihre' habing' Klauseln sollten tatsächlich in 'where' Klauseln ...' Having' ist, um Bedingungen auf den aggregierten Wert anzuwenden. – JohnHC

Antwort

0

ich es glaube nicht, dass ein „nicht mit“ Clausel, aber man kann immer noch

SELECT Whatever FROM wherever 
WHERE NOT EXISTS (
    *Select here* 
) 
Verwandte Themen