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?
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.
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
…