Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: Martin hexhex am Dezember 07, 2010, 10:53:00

Titel: Abfrage: WHERE Klausel mit AND Verknüpfung
Beitrag von: Martin hexhex am Dezember 07, 2010, 10:53:00
Liebe Community,

ich arbeite derzeit an einer Tabelle die nach Postleitzahlen aufgeschlüsselt werden soll. Nur ist es bei uns in Österreich so, dass ein Bundesland mehrere "Hauptsprengel" hat. Niederösterreich zum Beispeil hat 2*** (zB. 2334) und 3*** und ein paar von den Nachbar Bundesländern da manche Orte in Niederösterreich eben vom Nachbarbundesland mit Post versorgt werden. Dise gilt es auszusortieren.

SELECT ([Original Tabelle].[Wohnort]) AS WohnortNiederösterreich
FROM [Original Tabelle]
WHERE ((([Original Tabelle].[Wohnort]) Like "2??? *" Or ([Original Tabelle].[Wohnort]) Like "3??? *" Or ([Original Tabelle].[Wohnort]) Like "4300 *" Or ([Original Tabelle].[Wohnort]) Like "4303 *" Or ([Original Tabelle].[Wohnort]) Like "4372 *" Or ([Original Tabelle].[Wohnort]) Like "4372 *" Or ([Original Tabelle].[Wohnort]) Like "4392 *" Or ([Original Tabelle].[Wohnort]) Like "4431 *" Or ([Original Tabelle].[Wohnort]) Like "4432 *" Or ([Original Tabelle].[Wohnort]) Like "4441 *" Or ([Original Tabelle].[Wohnort]) Like "4482 *" And ([Original Tabelle].[Wohnort]) Not Like "2514 *"));


Die PLZ mit 4??? liegen ebenfalls in Niederösterreich werden aber wie schon vorher oben erwähnt von andren Bundesländern beliefert.
Jetzt meine Frage: Wieso filtert er mir nicht die 2514 raus? Von der Logik her müsste es so passen oder nicht? Nach der AND Verknüpfungen würden alle Kriterien folgen die ich speziell noch rausfiltern will.

Leider komme ich aus der Webdesign/MySQL Sparte - hab ich da was verschwitzt?

lg aus Wien ;)
Titel: Re: Abfrage: WHERE Klausel mit AND Verknüpfung
Beitrag von: Martin hexhex am Dezember 07, 2010, 10:56:57
SELECT [Original Tabelle].Wohnort
FROM [Original Tabelle]
WHERE ((([Original Tabelle].Wohnort) Like "2??? *" And ([Original Tabelle].Wohnort) Not Like "2500 *"));

Die Abfrage funktioniert! Aber wenn ich mehr als eine OR Bedingung habe - funktioniert die And Bedingung nicht mehr. Was mache ich flasch?
Titel: Re: Abfrage: WHERE Klausel mit AND Verknüpfung
Beitrag von: DF6GL am Dezember 07, 2010, 11:20:27
Hallo,

ganz so verstanden habe ich die Logik der PLZ nicht,   ;)

aber vermutlich ist die Einklammerung der OR-Teilkriterien ungenügend. D. h, alle OR's müssen innerhalb eines Klammerpaares stehen und das letzte AND außerhalb. Or hat niedrige Priorität als And und muß deshalb definiert eingeklammer werden.
Titel: Re: Abfrage: WHERE Klausel mit AND Verknüpfung
Beitrag von: Martin hexhex am Dezember 07, 2010, 12:20:42
ich habe das jetzt folgendermaßen ausgebessert

SELECT ([Original Tabelle].[Wohnort]) AS WohnortNiederösterreich
FROM [Original Tabelle]
WHERE (([Original Tabelle].Wohnort) Like "2??? *" Or ([Original Tabelle].Wohnort) Like "3??? *" Or ([Original Tabelle].Wohnort) Like "4300 *" Or ([Original Tabelle].Wohnort) Like "4303 *" Or ([Original Tabelle].Wohnort) Like "4372 *" Or ([Original Tabelle].Wohnort) Like "4372 *" Or ([Original Tabelle].Wohnort) Like "4392 *" Or ([Original Tabelle].Wohnort) Like "4431 *" Or ([Original Tabelle].Wohnort) Like "4432 *" Or ([Original Tabelle].Wohnort) Like "4441 *" Or ([Original Tabelle].Wohnort) Like "4482 *") And ([Original Tabelle].Wohnort) Not Like "2514 Traiskirchen";


stimmt das so?
funkioniert noch immer nicht ;) - Traiskirchen ist noch immer dabei - obwohl es nicht dabei sein sollte.
thx in advance
Titel: Re: Abfrage: WHERE Klausel mit AND Verknüpfung
Beitrag von: Martin hexhex am Dezember 07, 2010, 12:23:26
in den Kriterien steht das - vll bisschen übersichtler

(Wie "2??? *" Oder Wie "3??? *" Oder Wie "4300 *" Oder Wie "4303 *" Oder Wie "4372 *" Oder Wie "4372 *" Oder Wie "4392 *" Oder Wie "4431 *" Oder Wie "4432 *" Oder Wie "4441 *" Oder Wie "4482 *") Und Nicht Wie "2514 Traiskirchen"
Titel: Re: Abfrage: WHERE Klausel mit AND Verknüpfung
Beitrag von: DF6GL am Dezember 07, 2010, 12:33:18
Hallo,



schreib mal überall nach folgendem Syntax 
Like "2*"

und bau die Abfrage nacheinander mit mit den einzelnen Bedingungen auf...
Titel: Re: Abfrage: WHERE Klausel mit AND Verknüpfung
Beitrag von: database am Dezember 07, 2010, 12:56:12
Hallo Martin,

in Österreich haben wir keine PLZ mit mehr als 4 Stellen, daher ist die Schreibweise LIKE "xxxx *" unsinnig.
Fasse die ein- und auszuschließenden zu IN und NOT IN - Listen zusammen und klammere die ORs wie DF6GL vorgeschlagen hat ein.

Versuch mal das:


SELECT Wohnort AS WohnortNiederösterreich
FROM [Original Tabelle]
WHERE (Wohnort LIKE "2*" OR Wohnort LIKE "3*" Or Wohnort  In ("4300","4303","4372","4392","4431","4432","4441","4482")) AND Wohnort NOT IN("2514","2515","2516");



2514,2515,2516 soll eine beispielhafte Liste darstellen - bitte anpassen!

Grüße
Peter
Titel: Re: Abfrage: WHERE Klausel mit AND Verknüpfung
Beitrag von: DF6GL am Dezember 07, 2010, 13:00:21
Hallo,


und ich befürchte, dass Plz UND Wohnort in EINEM Feld stehen...   :'(
Titel: Re: Abfrage: WHERE Klausel mit AND Verknüpfung
Beitrag von: Martin hexhex am Dezember 07, 2010, 13:24:21
 ::) ja PLZ und Wohnort stehen in einem Feld - aber dafür bin ich nicht verantwortlich....

Die Methode mit In und Not in gefällt mir viel besser - komme aber erst am Donnerstag dazu sie zu testen.
Titel: Re: Abfrage: WHERE Klausel mit AND Verknüpfung
Beitrag von: database am Dezember 07, 2010, 14:21:26
Hallo,

Zitatja PLZ und Wohnort stehen in einem Feld - aber dafür bin ich nicht verantwortlich
...oh Mann, du Ärmster ...   ;) ;D


SELECT Wohnort AS WohnortNiederösterreich
FROM [Original Tabelle]
WHERE (Left(Wohnort,4) LIKE "2*" OR Left(Wohnort,4) LIKE "3*" Or Left(Wohnort,4)  In ("4300","4303","4372","4392","4431","4432","4441","4482")) AND Left(Wohnort,4) NOT IN("2514","2515","2516");



...sollte den Schaden in Grenzen halten...  ;)
Titel: Re: Abfrage: WHERE Klausel mit AND Verknüpfung
Beitrag von: Martin hexhex am Dezember 09, 2010, 11:12:21
ja sehr cewl  ;D
der Syntax funktioniert - Ich danke vielmals!
Titel: Re: Abfrage: WHERE Klausel mit AND Verknüpfung
Beitrag von: database am Dezember 09, 2010, 12:48:58
Aber bitte schön ...  ;)

ZitatSyntax funktioniert
..hättest du's anders wollen?  ;D ;D ;D

Grüße
Peter