Häufigkeit von Zahlen in Accessdatenbank ermitteln



  • Hi Leutz,

    ich habe ein Problem mit o.g. Title.

    Ich schreibe gerade ein Programm, wo man unter anderem eine Webseite bewerten kann. (ich mach das mit Access zu Übungszwecken).

    Dafür habe ich mal simple eine kleine Tabelle eingerichtet, die ungefähr so aus sieht und vote heißt.

    VoteID VoteWert
    1 -----> 5
    2 -----> 3
    3 -----> 5
    4 -----> 5
    5 -----> 4

    Nun möchte ich ermitteln, mit welcher Zahl am meißten gevotet wurde.
    In dem Beispiel wurde ja 3x mit der 5 gevotet.

    Mein Lösungsansatz sieht so aus:

    vector<int> Anzahl;
    vector<int> vote_wert;
    
    DatenbankModul->ADOQuery->Close();
    DatenbankModul->ADOQuery->SQL->Clear();
    DatenbankModul->ADOQuery->SQL->Add("SELECT COUNT(VoteWert) AS Anzahl,VoteWert FROM vote GROUP BY VoteWert HAVING COUNT(VoteWert) >2 ORDER BY 'DESC'");
    DatenbankModul->ADOQuery->Open();
    for(int i=0; i<DatenbankModul->ADOQuery->RecordCount; i++)
            {
             Anzahl.push_back(DatenbankModul->ADOQuery->FieldByName("Anzahl")->AsInteger);
             vote_wert.push_back(DatenbankModul->ADOQuery->FieldByName("VoteWert")->AsInteger);
             DatenbankModul->ADOQuery->Next();
            }
    
     for(int j=0; j<VoteWert.size(); j++)
            {
             for(int k=0; k<Anzahl.size(); k++)
                    {
                         FrameHauptframe1->Memo2->Lines->Add(Anzahl[k]);
                    }
             FrameHauptframe1->Memo1->Lines->Add(lottozahl[j]);
           }
    

    Ich habe mir das mal ausgeben lassen, und es zeigt mir die 5 an mit 3 Votes.
    Ich weiß ja vorher nie, wieviele Votes pro Zahl getätigt wurden, also ist die Bedingung

    HAVING COUNT(VoteWert) >2

    mist.
    Wie kann ich das dynamisch machen? Also anstatt fest einen Wert reinzuschreiben (wie zb. >2, oder >10)?
    Wär echt über eine Hilfe dankbar.

    grüße
    Gerd



  • Wofür brauchst Du denn überhaupt das HAVING?

    Gruß,

    Alexander


Anmelden zum Antworten