Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

A365: zwei Nicht-Kriterien schliessen 6 statt 2 Datensätze aus, warum?

4 views
Skip to first unread message

Forrest Gump

unread,
Oct 20, 2021, 2:21:29 PM10/20/21
to
Hallo

Aus einer Abfrage resultieren 49 Datensätze. Ich möchte nun 2 bestimmte
Datensätze ausschliessen und ergänze die Abfrage entsprechend. Nun
resultieren aber 43 Datensätze statt der erwarteten 47.
Das verwirrt mich sehr. :-)

Details:

Die Where-Klausel
WHERE (((tbl_Adressen.MtglArt)=2 Or (tbl_Adressen.MtglArt)=8))
ergibt 49 Datensätze.

Soweit, so gut.

Ausschluss zweier bestimmter Datensätze aus dieser Menge:

WHERE (((tbl_Adressen.Vorname)<>"Hansjakob" And
(tbl_Adressen.Vorname)<>"Wilfried") AND ((tbl_Adressen.MtglArt)=2 Or
(tbl_Adressen.MtglArt)=8))

Entwurfsansicht:
Zeile "Kriterien", Spalte "Vorname":
Nicht "Hansjakob" Und Nicht "Wilfried"

Zeile "Kriterien", Spalte "MtglArt":
2 Oder 8

Die beiden Kriterien befinden sich auf derselben Zeile, sind also
"und"-Verknüpft.

Damit resultieren nun eben 43 statt der erwarteten 47 Datensätze.

Warum dies? Bzw. wie muss ich die Abfrage umformulieren.

Vielen Dank.



--
"Das Gute an Vietnam war, dass man immer irgendwas vorhatte."
Forrest Gump
---

Karl Donaubauer

unread,
Oct 20, 2021, 3:42:39 PM10/20/21
to
Hallo!

Forrest Gump:
> Aus einer Abfrage resultieren 49 Datensätze. Ich möchte nun 2 bestimmte
> Datensätze ausschliessen und ergänze die Abfrage entsprechend. Nun
> resultieren aber 43 Datensätze statt der erwarteten 47.
> Das verwirrt mich sehr. :-)
>
> Details:
>
> Die Where-Klausel
> WHERE (((tbl_Adressen.MtglArt)=2 Or (tbl_Adressen.MtglArt)=8))
> ergibt 49 Datensätze.
>
> Soweit, so gut.
>
> Ausschluss zweier bestimmter Datensätze aus dieser Menge:
>
> WHERE (((tbl_Adressen.Vorname)<>"Hansjakob" And
> (tbl_Adressen.Vorname)<>"Wilfried") AND ((tbl_Adressen.MtglArt)=2 Or
> (tbl_Adressen.MtglArt)=8))
>
> Entwurfsansicht:
> Zeile "Kriterien", Spalte "Vorname":
> Nicht "Hansjakob" Und Nicht "Wilfried"
>
> Zeile "Kriterien", Spalte "MtglArt":
> 2 Oder 8
>
> Die beiden Kriterien befinden sich auf derselben Zeile, sind also
> "und"-Verknüpft.
>
> Damit resultieren nun eben 43 statt der erwarteten 47 Datensätze.
>
> Warum dies? Bzw. wie muss ich die Abfrage umformulieren.

Die Klammern gehören geändert, damit das OR richtig zieht. Reduziert auf
die notwendigen sieht man das besser:

WHERE tbl_Adressen.Vorname<>"Hansjakob" And
tbl_Adressen.Vorname<>"Wilfried"
AND (tbl_Adressen.MtglArt=2 Or tbl_Adressen.MtglArt=8)

--
Servus
Karl
*********
Access-Entwickler-Konferenz: https://www.donkarl.com/?AEK
Access DevCon: http://AccessDevCon.com
Access FAQ: https://www.donkarl.com

Forrest Gump

unread,
Oct 20, 2021, 5:25:42 PM10/20/21
to
Also sprach Karl Donaubauer am 20.10.2021 um 21:42:

> Die Klammern gehören geändert, damit das OR richtig zieht. Reduziert auf
> die notwendigen sieht man das besser:
>
> WHERE tbl_Adressen.Vorname<>"Hansjakob" And
> tbl_Adressen.Vorname<>"Wilfried"
> AND (tbl_Adressen.MtglArt=2 Or tbl_Adressen.MtglArt=8)

Vielen Dank. Ich dachte eigentlich, dass Access die Klammersetzung schon
richtig macht.

Forrest Gump

unread,
Oct 21, 2021, 1:45:21 AM10/21/21
to
Also sprach Karl Donaubauer am 20.10.2021 um 21:42:

> WHERE tbl_Adressen.Vorname<>"Hansjakob" And
> tbl_Adressen.Vorname<>"Wilfried"
> AND (tbl_Adressen.MtglArt=2 Or tbl_Adressen.MtglArt=8)

Seltsamerweise resultieren auch aus dieser Where-Klausel 43 Datensätze.
Ich habe die Ergebnisse verglichen (welche konkreten Datensätze fehlen)
und sehe, dass der Abfrage-Interpreter auch Datensätze aussortiert, die
leere Vornamefelder haben (null).

Ich würde erwarten, dass tbl_Adressen.Vorname<>"Hansjakob" nur
Datensätze aussortiert, wo "Hansjakob" im Vornamen steht und nicht auch
jene mit nichts (null).

Wie ist das Verhalten erklärbar?

Karl Donaubauer

unread,
Oct 21, 2021, 3:58:26 AM10/21/21
to
Hallo!

Forrest Gump:
> ...
> Ich würde erwarten, dass tbl_Adressen.Vorname<>"Hansjakob" nur
> Datensätze aussortiert, wo "Hansjakob" im Vornamen steht und nicht auch
> jene mit nichts (null).
>
> Wie ist das Verhalten erklärbar?

Wenn man Null mit etwas oder nicht etwas vergleicht, schließt man Null
aus, weil es sich seit jeher nur von einem Null-Vergleich angesprochen
fühlt.

Wenn die leeren Werte dabei sein sollen, kannst du deine
Ungleich-Kriterien um einen Null-Vergleich erweitern:

<>... OR Is Null

Forrest Gump

unread,
Oct 21, 2021, 6:40:20 AM10/21/21
to
Also sprach Karl Donaubauer am 21.10.2021 um 09:58:

> Wenn man Null mit etwas oder nicht etwas vergleicht, schließt man Null
> aus, ...

Schade.
IMHO ist die Aussage "Der Feldinhalt "null" ist ungleich "Hansjakob"
wahr. Weil, da steht halt nicht *Hansjakob" drin.

Das scheint mir ein Unterschied im Denken der Informatiker und der
Nicht-Informatiker.

Forrest

Karl Donaubauer

unread,
Oct 21, 2021, 9:12:10 AM10/21/21
to
Hallo!

Forrest Gump:
> Karl Donaubauer:
>
>> Wenn man Null mit etwas oder nicht etwas vergleicht, schließt man Null
>> aus, ...
>
> Schade.
> IMHO ist die Aussage "Der Feldinhalt "null" ist ungleich "Hansjakob"
> wahr. Weil, da steht halt nicht *Hansjakob" drin.
>
> Das scheint mir ein Unterschied im Denken der Informatiker und der
> Nicht-Informatiker.

Naja, sagen wir, du starrst auf ein Stück vietnamesischen Dschungels,
siehst nur Blätter und Geäst, und rufst:

"Alle Vietkongs, die nicht Ho Chi Min heißen, rauskommen da!"

Die wenigsten werden dem Folge leisten. Das war zu konkret.

2. Versuch:

"Alle, die nicht Ho Chi Min heißen oder die getarnt/unbekannt/anonym
drin sein könnten, rauskommen da!"

Schon fühlen sich auch z.B. die im Kollektiv Namenlosen angesprochen und
springen ebenfalls raus. Drin bleibt jedenfalls nur Ho selber.

s.a. https://de.wikipedia.org/wiki/Nullwert

Forrest Gump

unread,
Oct 21, 2021, 1:14:09 PM10/21/21
to
Also sprach Karl Donaubauer am 21.10.2021 um 15:12:

> "Alle, die nicht Ho Chi Min heißen oder die getarnt/unbekannt/anonym
> drin sein könnten, rauskommen da!"
>
> Schon fühlen sich auch z.B. die im Kollektiv Namenlosen angesprochen und
> springen ebenfalls raus. Drin bleibt jedenfalls nur Ho selber.

Danke.

Es erscheint mir halt trotzdem nicht logisch, wenn ein leeres Feld nicht
ungleich einem Wert sein soll. (Das würde ja im Umkehrschluss auch
bedeuten, dass ein leeres Feld gleich einem - beliebigen - Wert ist.)

Aber ich will Dich nicht wütend machen und Deine und meine Zeit nicht
weiter beanspruchen. Es ist halt einfach so. :-)
0 new messages