Announcement

Collapse
No announcement yet.

Zweimal COUNT DISTINCT

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Zweimal COUNT DISTINCT

    Hallo!

    Wir würden gerne einen SQL absetzen in der Art:

    SELECT COUNT(DISTINCT kdnr) AS Kunde,
    COUNT(DISTINCT objnr) AS Objekt
    FROM tabelle

    Beim zweiten DISTINCT wird ein Syntax-Fehler gemeldet, auch bei Guppierungen. Ich meine aber, so etwas schon mal in Newsgroups gesehen zu haben. Deshalb frage ich mich, ob das eine Einschränkung unserer Datenbank (Informix) ist. Oder gibt es eine plausible Erklärung, warum die Datenbank dies nicht hinbekommt? Oder gibt es etwa noch einen anderen Weg, ohne mehrere SQLs abschicken zu müssen?

    Stephan

  • #2
    es gibt eine plausible Erklärung dafür. Wenn die Datenbank "COUNT(DISTINCT kdnr) AS Kunde" ausführt, muß die Tabelle nur nach "kdnr" gruppiert werden, für das "COUNT(DISTINCT objnr) AS Objekt" jedoch nur nach "objnr". In einer Abfrage kann sie jedoch auch nur einmal gruppieren, Du mußt also zwei Statements absetzen.
    Oder willst Du alle gleichen Tupel (kdnr, objnr) abfragen?<BR>
    Dann einfach ein
    <PRE>
    SELECT kdnr, objnr, COUNT(*) FROM tabelle GROUP BY kdnr, objnr
    </PRE&gt

    Comment


    • #3
      Wenn die Datenbank zum Zählen den Hauptselect gruppieren muss, dann ist das klar.
      Sie könnte es aber doch intern in einen SubSelect auslagern, oder?
      Es ging schon darum, die Anzahl unterschiedlicher Werte in den beiden Spalten unabhängig voneinander zu ermitteln, also kein GROUP BY kdnr, objnr

      Comment


      • #4
        Wenn Du zwei Unterabfragen zusammenführst, brauchst Du noch eine dritte Abfrage, die diese zwei Unterabfragen über irgendeine JOIN-Verknüpfung wieder zusammenführt. Das klingt aber nicht besonders sinnvoll, weil Du die auf den ersten Blick vielleicht erhoffte Ersparnis damit wieder kaputt machst (intern jedenfalls). Mache doch für zwei unabhängige Werte zwei unabhängige Abfragen.<p>
        Schöne Grüße, Mario Noac
        Schöne Grüße, Mario

        Comment

        Working...
        X