Kleines BlackOut bei Abfrage

28/07/2009 - 21:22 von Thomas Mauritz | Report spam
Hi NG,

ich sitze bei einem kleinen Abfrageproblem und mir will die Lösung einfach
nicht einfallen.

Folgende Situation habe ich:
Ich möchte 2 Tabellen mit einander vergleichem um herauszubekommen welche
Datensàtze bestimmten Prodiktarten entsprechen.

Beispiel:
Tabelle 1: 2 Felder (ID und Produktart)
Tabelle 2: 2 Felder (ID und Produktart, Identisch mit Tabelle 1)

Tabelle1:
ID Produktart
-
0815 1
0815 2
0815 3
4711 1
4711 2


Tabelle2:
ID Produktart
-
0815 1
4711 200

Abfrage: Suche alle IDs die der Produktart 1,2 oder 3 enztsprechen aus
beiden Tabellen.

Erwartetes Ergebnis: ID 0815

Wie ist das zu lösen?

Versuche mit zeige mir alle IDs die in der einen Tabelle sind und in der
anderen nicht, funktioniert aber das ist nicht die Aufgabe.

Ich möchte alle ID haben die exaxt die Produkarten 1, 2 und 3 haben und
keine weitere aufweisen.

Hat jemand eine Idee?

Gruß
Thomas
 

Lesen sie die antworten

#1 Josef Poetzl
28/07/2009 - 22:26 | Warnen spam
Hallo!

Thomas Mauritz schrieb:
[...]
Tabelle1:
ID Produktart
-
0815 1
0815 2
0815 3
4711 1
4711 2

Tabelle2:
ID Produktart
-
0815 1
4711 200

Abfrage: Suche alle IDs die der Produktart 1,2 oder 3 enztsprechen aus
beiden Tabellen.

Erwartetes Ergebnis: ID 0815

Wie ist das zu lösen?




0815 muss angezeigt werden, weil es in Tabelle zu dieser ID exakt die
Produktarten 1, 2 und 3 gibt?
Und 4711 darf nicht angezeigt werden, weil die 3 fehlt?
Oder darf 4711 nicht angezeigt werden, weil dazu in Tabelle2 die
Produktart 200 existiert?

Falls ersteres stimmt ... wozu ist dann Tabelle2 notwendig?
=>
select
ID
from
Tabelle1
where
Produktart IN (1, 2, 3)
Group By
ID
Having Count(*) = 3

... das funktioniert aber nur, wenn ID + Produktart eindeutig ist.


Sollte Tabelle2 nur einen DS je ID aufweisen, könntest du auch so
einen Weg gehen:

select
ID
from
Tabelle2 T2
where
Exists (select * from tabelle1 T1
where T1.ID = T2.ID and T1.Produktart = 1)
AND
Exists (select * from tabelle1 T1
where T1.ID = T2.ID and T1.Produktart = 2)
AND
Exists (select * from tabelle1 T1
where T1.ID = T2.ID and T1.Produktart = 3)


Welche Variante für die beschriebenen Aufgabenstellung zweckmàßig ist,
kann ich nicht beurteilen, da mir die Aufgabenstellung nicht klar ist.
Daher versuchte ich erstmal nur 2 Varianten auf gut Glück. ;-)


mfg
Josef

EPT: (Access Error Prevention Table) http://access.joposol.com/
FAQ: (Access-FAQ von Karl Donaubauer) http://www.donkarl.com/

Ähnliche fragen