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

SQL: Abfrage ohne Doppelte Einträge

323 views
Skip to first unread message

Björn Benatzky

unread,
Jul 9, 2004, 8:49:14 AM7/9/04
to
Hallo,

ich habe in einer Tabelle mehrere Datensätze stehen, die ich anhand eines
Wertes identifiziere.

Spalte A, Spalte B, Spalte C, ....
1 1 1
2 2 2
3 3 3
3 2 2
4 4 4

Nun möchte ich eine Abfrage auf die Tabelle setzen, die mir nur die
Datensätze wiedergibt, wo dieser Wert nicht doppelt vorkommt.
Im Beispiel also die Zeilen 1,2 und 4. Der Befehl DISTINCT würde mir nur
alle doppelten herausstreichen.
Im Beispiel gäbe es also keine doppelten Datensätze, also gibt er mir alle
zurück.
Wie kann ich das in eine SQL Abfrage fassen ?

Danke für die Hilfe.

Gruß
Björn


Felix Uesbeck

unread,
Jul 9, 2004, 9:03:59 AM7/9/04
to
über Gruppierung
z.B. in den Zeilen A,B
und in Zeile C dann mit ErsterWert / LetzterWert oder Min / Max
je nach dem was gebraucht wird
--
Gruß Felix


"Björn Benatzky" <Bjoern....@gmx.de> schrieb im Newsbeitrag
news:edBAVNbZ...@TK2MSFTNGP09.phx.gbl...

Björn Benatzky

unread,
Jul 9, 2004, 9:22:51 AM7/9/04
to
Danke für den Ansatz Felix,
aber leider funktioniert es noch nicht so richtig, oder ich habe es nicht
richtig umsetzen können.

Denn wenn die weiteren Werte in den Zeilen nach B variieren, werden sie doch
wieder miteinbezogen

Spalte A, Spalte B, Spalte C, ....
1 1 1
2 2 2

3 3 7
3 2 9
4 4 4


Kannst Du mir mal ein Beispiel schreiben.
Danke

Gruß
Björn


"Felix Uesbeck" <F.Ue...@T-Online.de> wrote in message
news:ccm543$4b5$01$1...@news.t-online.com...

Felix Uesbeck

unread,
Jul 10, 2004, 4:35:34 AM7/10/04
to
ich denke schon das , das richtig umsetzen könntest.
wahrscheinlich haste einfach eine fasche Vorstellung von doppelten
Datensätzen.
in deinem Beispiel ist kein Datensatz Doppelt, denn ein Datensatz setzt sich
zusammen aus den Spalte A,B,C.


Also wenn jeder wert nur einmal im Ergebnis sein soll egal aus welcher
spalte dann geht's so nicht.
Erläuterte doch mal was genau raus kommen soll.
--
Gruß Felix


"Björn Benatzky" <Bjoern....@gmx.de> schrieb im Newsbeitrag

news:eLSbHgbZ...@TK2MSFTNGP11.phx.gbl...

Peter Doering

unread,
Jul 10, 2004, 5:33:31 AM7/10/04
to
Hallo,

On Fri, 9 Jul 2004 15:22:51 +0200, Björn Benatzky wrote:

> aber leider funktioniert es noch nicht so richtig, oder ich habe es nicht
> richtig umsetzen können.
>
> Denn wenn die weiteren Werte in den Zeilen nach B variieren, werden sie doch
> wieder miteinbezogen
>
> Spalte A, Spalte B, Spalte C, ....
> 1 1 1
> 2 2 2
> 3 3 7
> 3 2 9
> 4 4 4
>
> Kannst Du mir mal ein Beispiel schreiben.

Was ist nach deiner Definition doppelt? Wenn Spalte A + Spalte B + Spalte C
im selben oder in mehreren DS uebereinstimmen, oder A + B oder B + C oder A
+ C im selben oder in mehreren?

>> Nun möchte ich eine Abfrage auf die Tabelle setzen,
>> die mir nur die Datensätze wiedergibt, wo dieser Wert

Welcher Wert?

>> nicht doppelt vorkommt. Im Beispiel also die Zeilen
>> 1,2 und 4.

Ist 1,2,4 der Wert in Spalte A?

Vielleicht wird's verstaendlicher, wenn du ein echtes statt einem
Pseudo-Beispiel gibst.

Gruss - Peter

--
Ich beantworte keine Fragen per Email.
Mitglied im http://www.dbdev.org
FAQ: http://www.donkarl.com

Björn Benatzky

unread,
Jul 12, 2004, 2:25:08 AM7/12/04
to
"Felix Uesbeck" <F.Ue...@T-Online.de> wrote in message
news:cco9or$bou$07$1...@news.t-online.com...


Ihr habt recht,
sorry, erscheint für einen Außenstehenden wirklich etwas undeutlich.

Also, identifiziert wird der Datensatz anhand der Spalte A (ggf. auch der
Spalte B).
Wenn nun mehrere Datensätze einen gleichen Wert in dieser Spalte haben
sollten,
möchte ich sie aus der Abfrage herausfiltern.

Gruß
Björn

Felix Uesbeck

unread,
Jul 12, 2004, 4:18:12 AM7/12/04
to
über 2 Abfragen
1. nur Spalte A Gruppieren
mit Anzahl Spalte A > 1
SELECT tbl_.A, Count(tbl_.A) AS AnzahlvonA FROM tbl_ GROUP BY tbl_.A
HAVING (((Coun(tbl_.A))>1));

2. das Ergebnis der 1 Abfrage mit der tbl_ verbinden
SELECT tbl_.* FROM tbl_ INNER JOIN Abfrage1 ON tbl_.A = Abfrage1.A;

ggf. dann auch dann die Spalte B mit ein beziehen
--
Gruß Felix


"Björn Benatzky" <Bjoern....@gmx.de> schrieb im Newsbeitrag

news:O4j60k9Z...@TK2MSFTNGP09.phx.gbl...

Henry Habermacher [MVP Access]

unread,
Jul 13, 2004, 9:58:10 AM7/13/04
to
Hallo Björn

Björn Benatzky wrote in news:edBAVNbZ...@TK2MSFTNGP09.phx.gbl:

Ich versteh's nicht ganz. Du möchtest, dass alle Datensätze nicht
vorkommen, in denen in Spalte B und C nicht das gleiche drin steht?
Das wäre:
WHERE [Spalte B] <> [Spalte C]

oder meinst Du, Du möchtest alle Datensätze haben, wo A <> B und A <> C
und B <> C ist?
Auch das geht einfach:
SELECT * FROM DeineTabelle
WHERE [Spalte A] <> [Spalte B]
AND [Spalte B] <> [Spalte C]
AND [Spalte A] <> [Spalte C]

rsp. evt. einfacher verständlich (Moore'sche Algebra):
WHERE NOT ( [Spalte A] = [Spalte B]
OR [Spalte B] = [Spalte C]
OR [Spalte A] = [Spalte C])

Gruss
Henry

--
Keine E-Mails auf Postings in NGs senden!
Don't send e-mails to postings in newsgroups!
KB: http://support.microsoft.com/default.aspx
FAQ: http://www.donkarl.com/AccessFAQ.htm
OH: Online Hilfe von Microsoft Access (Taste F1)
Downloads: http://www.dbdev.org

Björn Benatzky

unread,
Jul 14, 2004, 5:50:59 AM7/14/04
to
Danke Felix,

jetzt habe ich es verstanden und konnte es auch adäquat umsetzen.
Danke für die Hilfe.

Gruß
Björn

"Felix Uesbeck" <F.Ue...@T-Online.de> wrote in message
news:ccthgd$i7$00$1...@news.t-online.com...


> über 2 Abfragen
> 1. nur Spalte A Gruppieren
> mit Anzahl Spalte A > 1
> SELECT tbl_.A, Count(tbl_.A) AS AnzahlvonA FROM tbl_ GROUP BY tbl_.A
> HAVING (((Coun(tbl_.A))>1));
>
> 2. das Ergebnis der 1 Abfrage mit der tbl_ verbinden
> SELECT tbl_.* FROM tbl_ INNER JOIN Abfrage1 ON tbl_.A = Abfrage1.A;
>
> ggf. dann auch dann die Spalte B mit ein beziehen
> --
> Gruß Felix
>
>

> >
> >

0 new messages