Marcus: SQL Statement

Hallo !

Ich habe mein Problem schon mal vor paar Tagen gepostet, jedoch habe ich mich wohl falsch ausgedrückt.

ID    SP1     SP2      SP3     SP4    SP5      SP6
--------------------------------------------------
1    1 2 2 6 3 4
2     3 3 3 1 3 3
3   2 3 2 4 1 3
4     3 5 2 4 2 6
5    3 6 1 2 1 3

So sieht etwa meine Datenbank aus. Nun möchte ich gerne wissen wie oft in SP1 die Zahl 1 vorkommt, das gleich für die Zahl 2,3,4,5,etc.
Und das gleich Spiel für die anderen Spalten.

Hat jemand ein Idee wie das SQL Statement aussehen müsste ? Ich habs mit Count probiert, leider bekomme ich dann immer nur ein Wert zurückgeliefert.

Über jeden Tip wäre ich sehr dankbar

Gruss

Marcus

  1. Hi Marcus

    So sieht etwa meine Datenbank aus. Nun möchte ich gerne wissen wie oft in SP1 die Zahl 1 vorkommt, das gleich für die Zahl 2,3,4,5,etc.
    Und das gleich Spiel für die anderen Spalten.

    Hat jemand ein Idee wie das SQL Statement aussehen müsste ? Ich habs mit Count probiert, leider bekomme ich dann immer nur ein Wert zurückgeliefert.

    select spaltenname, count(*)
      from tabelle
      group by spaltenname

    spaltenname steht zb für sp1, sp2...

    Das müsste dir zurückgeben wie häufig jeweils ein Wert in der
    Spalte vor kommt. Pro Spalte müsstest du das aber einzeln
    machen. Kann es aber hier nicht testen, deswegen ungetestet.

    Gruss Daniela

  2. Hallo,

    ID    SP1     SP2      SP3     SP4    SP5      SP6

    1    1 2 2 6 3 4
    2     3 3 3 1 3 3
    3   2 3 2 4 1 3
    4     3 5 2 4 2 6
    5    3 6 1 2 1 3

    So sieht etwa meine Datenbank aus. Nun möchte ich gerne wissen wie oft in SP1 die Zahl 1 vorkommt, das gleich für die Zahl 2,3,4,5,etc.
    Und das gleich Spiel für die anderen Spalten.

    Wie oft jede Zahl in SP1 sstehet ist recht einfach:
    select SP1,count(*) from TABELLE group by SP1

    Eine Abfrage zu basteln, welche das gleichzeitig auch für die anderen Spalten macht ist AFAIK mit dieser Datenstruktur nicht möglich. In einigen Datenbanken könntest Du eine Stored-Procedure einsetzen, welche alle 6 Spalten hintereinander zählt, um dann die gesammelten Ergebnisse zurückzuliefern.

    Soweit ich mihc mit Datenbanken auskenne, sind Tabellen, in denen durchnummerierbare Spalten verwendet werden (SP1-SP6) nicht gerade gutes Design. Wenn Du beispielsweise die Tabelle so aufgebaut hättest
    ID   KATEGORIE   WERT
    ----------------------
    1        1          1
    1        2          2
    1        3          2
    1        4          6
    1        5          3
    1        6          4
    ...
    5        6          3

    (Wobei ID und KATEGORIE zusmamen den Primärschlüssel bilden)

    Dann würde die Abfrage so aussehen
    select KATEGORIE,WERT,count(*) from TABELLE group by KATEGORIE,WERT

    Grüße
      Klaus