PDA

Vollständige Version anzeigen : SQL Abfrage doppelte Einträge


sodah
23.03.2004, 15:46
Hi,

wie kann ich denn vermeiden, dass wie um unten beschriebenen Code, doppelte TEvent.ID -Ergebnisse nicht erscheinen.
Der SQL-String dient als Basis für ein Kombinationsfeld

Achtung ich habe hier der Optik wegen künstliche Zeilenumbrüche geschaffen.


SELECT TKunden.FirmaKurz & TEventSubZeiten.Datum & TEvent.Aktionsname AS Komplett, TEvent.ID FROM TKunden
INNER JOIN (TEvent INNER JOIN TEventSubZeiten ON TEvent.ID = TEventSubZeiten.EventID)
ON TKunden.ID = TEvent.KundenID GROUP BY TKunden.FirmaKurz & TEventSubZeiten.Datum &
TEvent.Aktionsname, TEvent.ID, TEventSubZeiten.Datum HAVING (((TEventSubZeiten.Datum)>Now()));

sodah
23.03.2004, 16:36
Hi,

ich habe jetzt schon alles mögliche ausprobiert:

mit DISTINCTROW

SELECT DISTINCTROW TKunden.FirmaKurz & TEventSubZeiten.Datum & TEvent.Aktionsname AS Komplett, TEvent.ID FROM TKunden
INNER JOIN (TEvent INNER JOIN TEventSubZeiten ON TEvent.ID=TEventSubZeiten.EventID) ON TKunden.ID=TEvent.KundenID
GROUP BY TEvent.ID, TKunden.FirmaKurz & TEventSubZeiten.Datum & TEvent.Aktionsname, TEventSubZeiten.Datum HAVING
(TEventSubZeiten.Datum>Now());


mit Count

SELECT DISTINCTROW TKunden.FirmaKurz & TEventSubZeiten.Datum & TEvent.Aktionsname AS Komplett, TEvent.ID FROM TKunden
INNER JOIN (TEvent INNER JOIN TEventSubZeiten ON TEvent.ID=TEventSubZeiten.EventID) ON TKunden.ID=TEvent.KundenID
GROUP BY TEvent.ID, TKunden.FirmaKurz & TEventSubZeiten.Datum & TEvent.Aktionsname, TEventSubZeiten.Datum HAVING
Count(TEventSubZeiten.Datum>Now())=1);


Aber ich krieg es einfach nicht hin, weil 3 Tabellen Einfluss auf das Ergebnis haben.

sodah
23.03.2004, 17:06
Super Denkfehler von mir. Das Datum, welches mit angezeigt wird ist immer variabel. Daher gab es schon von vornherein keine doppelten Datensätze. Also mußt ich einfach nur den ersten Wert des Datums nehmen und dann ging es.
Und so sieht das ganze dann aus:


SELECT DISTINCT TEvent.Aktionsname & TKunden.FirmaKurz & First(TEventSubZeiten.Datum) AS Ausdr1, TEvent.ID FROM TKunden INNER JOIN
(TEvent INNER JOIN TEventSubZeiten ON TEvent.ID=TEventSubZeiten.EventID) ON TKunden.ID=TEvent.KundenID GROUP BY TEvent.ID, TKunden.FirmaKurz, TEvent.Aktionsname HAVING
(((First(TEventSubZeiten.Datum))>Now())) ORDER BY TEvent.ID;