DISTINCT Problem

hallo!

habe folgendes problem:

meine Tabelle
Tab1:
Feld1 (NUMBER) KundenID,
Feld2 (NUMBER) AuftragID,
Feld3 (CHAR) Kundenname,
Feld4 (CHAR) Datum

ich benötige jetzt alle Kundennamen, welche in einem bestimmten jahr angelegt worden sind, jedoch sollte die KundenID natürlich nur einmal vorkommen (es gibt ja mehr huber, bauer,…)!

also sowas:

select distinct KundenID, Kundenname, AuftragID where Datum = ‚2003‘;

mein problem ist dass das ‚distinct‘ natürlich nicht richtig greift (wird ja auf alle rows angewendet), da die AuftragID jedes Mal unterschiedlich ist. wie schaffe ich es dass ich das distinct nur auf die KundenID lege? gibt es andere wege?

danke und lg
michi

Hallo Michi,

Das Problem ist, dass dein Datenmodell nicht richtig normalisiert ist.
Eigentlich hättest Du eine Tabelle Kunden mit Name und Datum und eine Tabelle mit den Aufträgen. Auf den Aufträgen hättest Du dann einen Fremdschlüssel zur Tabelle Kunden.
Dann hättest Du jeden Kunden nur einmal und auch das DISTINCT bräuchtest Du nicht.

Kannst Du das Datenmodell noch ändern? Ansonsten wäre evtl. mit GROUP BY etwas ähnliches möglich.

Viele Grüsse
Simon

hallo simon!

also erstmals danke für deine schnelle hilfestellung!

leider kann ich die Datenbank nicht umändern (es sind weit mehr als diese 4 Felder drinnen) da es sich um eine Fremd Firmen Applikation handelt…

das wäre natürlich der einfachste weg

danke und lg
michi

hi!

select distinct KundenID, Kundenname, AuftragID where Datum =
‚2003‘;

wozu brauchst du die auftragid, wenn du nur die kunden brauchst? schmeiß die doch einfach aus dem select raus - oder brauchst du eine max, min, avg, cnt-auftrags-id?

select kundenid,kundenname, max(auftragid) where datum=‚2003‘
group by kundenid,kundenname

grüße,
tomh