Sql(oracle)-statement gesucht, 'pro UK'

Hallo,

ich suche eine Abfrage mit der ich die Anzahl (count) voneinander verschiedener Einträge eines Attributes (also:

select count(distinct attribut) from… )

pro unique key ermitteln kann.
(ich habe an der Stelle nicht ohne weiteres die wirklichen Werte des unique keys, so dass man durchloopen koennte)

Problem klar rübergebracht…?

thx für tipps!

o

Problem klar rübergebracht…?

Sorry, nicht kapiert. Probiers nochmal :smile:

Die Anzahl verschiedener Werte pro Unique Key ist doch die Anzahl Datensätze, da der Schlüssel eindeutig ist, oder?

Gruß

J.

Problem klar rübergebracht…?

Sorry, nicht kapiert. Probiers nochmal :smile:

) okay…

Die Anzahl verschiedener Werte pro Unique Key ist doch die
Anzahl Datensätze, da der Schlüssel eindeutig ist, oder?

Okay, das mit dem UK war vielleicht missverständlich… meine Frage ist eigentlich unabhängig davon. Ich versuch´s mal allgemeiner…
Also, eine Tabelle DATEN mit Attributen PK, NAME(UK), SPRACHE
(sagt jetzt nicht, dass es Quatsch ist, ein UK_constr. auf einem NAMEn zu haben - es ist nur ein Beispiel)

Mich interessiert jetzt, ob zu allen/jedem NAMEn in der Tabelle mehr als eine SPRACHE auftritt ( genaugenommen: 1 ). In dem Statement will ich „nur“ abfragen, ob zu einem NAMEn (daher dann eben die alte Formulierung „pro UK“, was falsch war, da der noch mehr Attribute enthält, NAME ist nicht alleine im UK!) immer genau eine SPRACHE vorkommt - wenn ‚ja‘ ist´s okay, wenn ‚nein‘ dann ‚Fehlermeldung‘. Wie gesagt, ich hoffe, das mit einem Statement lösen zu können, ohne über alle NAMEn z.B. loopen zu muessen (ich habe an der Stelle keine konkreten Werte).

Ich hoffe, es nun etwas klarer rübergebracht zu haben…
Merci!
o

Du meinst eine Gruppierung über den NAMEN und eine Zählung der auftretenden Werte pro Gruppe:

select name, count(sprache)
 from tabelle
 group by name
having count(sprache) \> 1;

Die Having-Klausel wirkt wie eine Where-Klausel, die auf die Ergebnisse einer Gruppenfunktion angewendet wird. Beachte, daß ich „> 1“ schreibe und nicht " 1", da ein Datensatz mit count = 0 existiert gar nicht, da er aus der Gruppierung runterfällt.

Gruß

J.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi José,

das ging ja fix - und das an einem Samstag:wink:
Danke, das klingt gut; muss morgen nochmal ins Büro und werd´s dann ausprobieren.
‚having‘ hab’ ich bisher zwar gekannt aber nie für nutzenswert gehalten…

Danke nochmal & schönes Wochenende!

o

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

select name, count(sprache)
from tabelle
group by name
having count(sprache) > 1;

Tschuldigung, dass ich mich einmische, aber wenn Name Unique ist, wie kann es dann mehrere Einträge mit verschiedenen Sprachen dazu geben? :o)

Oder habe ich wieder irgendwas nicht verstanden?

Grüße, Robert

select name, count(sprache)
from tabelle
group by name
having count(sprache) > 1;

Tschuldigung, dass ich mich einmische, aber wenn Name Unique
ist, wie kann es dann mehrere Einträge mit verschiedenen
Sprachen dazu geben? :o)

Mensch Robert - musstest du das merken…:wink: Ja, hatte ich doch oben noch mal berichtigt: NAME ist nur ein Attribut des UK…
So einverstanden:wink:?

o

Oder habe ich wieder irgendwas nicht verstanden?

Grüße, Robert

OK, alles klar. :o)

Grüße, Robert

Hi José,

alles roger - statement läuft (okay, ich musste noch 2 distints einbauen, jeweils ins count(…) )

dank’schön nochma’

o

select name, count(sprache)
from tabelle
group by name
having count(sprache) > 1;