Zahlen vergleichen und Menge zählen

MichaelB

Neuer Benutzer
Beiträge
4
Hallo Forumsmitglieder,

ich hätte mal eine Frage.

Ich benötige eine Datenbankabfrage in SQL / MySql. Da ich noch ein „blutiger“ Anfänger bin, komme ich leider nicht weiter.

Was habe ich:

Eine Tabelle mit folgenden Eigenschaften:

ID / Datum / Tag / Zahl_1 / Zahl_2 / Zahl_3

0 / 20120107 / Samstag / 2 / 9 / 20
1 / 20120111 / Mittwoch / 9 / 12 / 35

Was möchte ich:

Ausgabe:

2 - 1x
9 - 2x
20 - 1x
35 - 1x

Kurz gesagt, die Zahlen zählen und die Menge ausgeben.
Geht dies in einer Tabelle, oder muss ich mehrere Tabellen dafür anlegen?

Vorab vielen Dank!

Gruß
Michael
 
Werbung:

ukulele

Datenbank-Guru
Beiträge
4.702
Das geht auf jedenfall in einer Abfrage. Aber ich versteh grad nicht ganz, wie gezählt werden soll, ich versuchs mal, weiss aber nicht ob das Sinn ergibt.
Code:
SELECT    ID,
        Datum,
        Tag,
        (    CASE    Zahl_1
            WHEN    2    THEN    2*1
            WHEN    9    THEN    9*2
            WHEN    20    THEN    20*1
            WHEN    35    THEN    35*1
            ELSE    0
            END ) +
        (    CASE    Zahl_2
            WHEN    2    THEN    2*1
            WHEN    9    THEN    9*2
            WHEN    20    THEN    20*1
            WHEN    35    THEN    35*1
            ELSE    0
            END ) +
        (    CASE    Zahl_3
            WHEN    2    THEN    2*1
            WHEN    9    THEN    9*2
            WHEN    20    THEN    20*1
            WHEN    35    THEN    35*1
            ELSE    0
            END ) AS Summe
FROM    tabelle

Natürlich kann man das eleganter formulieren wenn z.B. mehr Zahlen betroffen sind, hier mal ein Ansatz (ob das Sinn ergibt kann ich nicht beurteilen):
Code:
SELECT    ID,
        Datum,
        Tag,
        (    CASE
            WHEN    Zahl_1 IN (2,20,35)    THEN    Zahl_1*1
            WHEN    Zahl_1 IN (9)        THEN    Zahl_1*2
            ELSE    0
            END ) +
        (    CASE
            WHEN    Zahl_2 IN (2,20,35)    THEN    Zahl_2*1
            WHEN    Zahl_2 IN (9)        THEN    Zahl_2*2
            ELSE    0
            END ) +
        (    CASE
            WHEN    Zahl_3 IN (2,20,35)    THEN    Zahl_3*1
            WHEN    Zahl_3 IN (9)        THEN    Zahl_3*2
            ELSE    0
            END ) AS Summe
FROM    tabelle
 

MichaelB

Neuer Benutzer
Beiträge
4
Hallo ukulele,

danke für die Antwort und das Script.
Aber leider ist es nicht das, was ich erhoft habe.
Es sollen die Zahlen verglichen und gezählt werden (wie oft kommen die Zahlen vor).
Die Datenbank ist nur ein Beispiel. Es sollen später noch viele weitere Zahlen hinzukommen.

Gruß
Michael
 

ukulele

Datenbank-Guru
Beiträge
4.702
Wie oft die Zahl vorkommt verstehe ich, aber vergleichen? Bevor ich jetzt nochmal was zusammen tippe bitte einmal eine eindeutige Prozessbeschreibung. So wie ich das sehe hast du 3 Spalten mit beliebigen Zahlen die alle, unabhängig ihrer Reihenfolge (ob Zahl 1 2 oder 3) "gezählt" ((i.S.v. wie oft kommt die Zahl vor) werden sollen. Ist in dem Zusammenhang das Datum und/oder der Tag ein Unterscheidungskriterium oder wird alles zusammen gezählt?
 

Charly

Datenbank-Guru
Beiträge
306
Hallo MichaelB,

hoffe der Ansatz bringt Dich weiter:

Code:
select Zahl, count(ID) as counter from (
select Zahl_1 as Zahl, ID from T1 as A
union
select Zahl_2 as Zahl, ID from T1 as B
union
select Zahl_3 as Zahl, ID from T1 as C
) as T2
group by Zahl
order by Zahl

Gruß charly
 

MichaelB

Neuer Benutzer
Beiträge
4
Hallo Charly,

dank dir!
Ich werde es heute Abend testen.
Datum und Wochentag sind momentan noch nicht (später schon) relevant.
Ich melde mich wieder.

Gruß
Michael
 
Werbung:
Oben