Ankündigung

Einklappen
Keine Ankündigung bisher.

Einträge über zwei Spalten zählen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Einträge über zwei Spalten zählen

    Hallo

    Ich habe eine Datenbank, in der folgende Werte stehen

    id - a - b - name
    1 - 1 - 4 - oskar
    2 - 1 - 5 - klaus
    3 - 4 - 1 - hans

    Nun soll am Ende eine Tabelle ausgegeben werden, die wie folgt aussieht:

    1 - 3mal
    4 - 2mal
    5 - 1mal

    Die Abfrage soll per PHP gemacht werden - ich habe sowas nur seit über 6 Jahren nicht mehr gemacht - ich kriege es nicht hin.
    Mag mir jemand helfen? Ich dachte an sowas:

    PHP-Code:
    $sqlstatement="SELECT name, sum(count (a), count(b)) as summe FROM table order by summe";
    $sql mysql_query("$sqlstatement");
    while ( 
    $row mysql_fetch_array($sql) ) {


    Aber so geht das nicht - man ich bin so eingerostet - wenn man das nie wirklich gelernt hat und jahrelang nicht braucht.

    Tausend Dank an euch.

    LG Andy

  • #2
    Zitat von sinai Beitrag anzeigen
    Ich habe eine Datenbank, in der folgende Werte stehen

    id - a - b - name
    1 - 1 - 4 - oskar
    2 - 1 - 5 - klaus
    3 - 4 - 1 - hans

    Nun soll am Ende eine Tabelle ausgegeben werden, die wie folgt aussieht:

    1 - 3mal
    3 mal von was denn bitte?

    Bitte zeige richtigen Code, einen SQL-Dump zum Beispiel, denn a und b sind keine Spaltennamen in meinen Augen.

    Kommentar


    • #3
      Die von dir verwendete mysql_ Erweiterung ist veraltet daher und aus der aktuellen PHP Version 7 schon entfernt worden. Bau am besten gleich dein Script auf PDO oder mysqli um.

      http://php.net/manual/de/function.mysql-query.php -> roter Kasten.
      The string "()()" is not palindrom but the String "())(" is.

      Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
      PHP.de Wissenssammlung | Kein Support per PN

      Kommentar


      • #4
        Der Eintrag 1 in den beiden Spalten a und b kommt dreimal vor, der Eintrag 4 kommt zweimal vor und 5 kommt nur einmal vor.

        Sorry, ich wollte es einfach halten und habe deshalb nur Buchstaben als Feldnamen angegeben.

        Kommentar


        • #5
          Danke Hausl, sehe ich mir an, komme ja bloß nicht mal mehr mit den einfachsten Sachen zurecht...

          Kommentar


          • #6
            Daran sieht man aber nicht ob du ein Normalisierungsproblem hast oder es performanter gelöst werden kann.

            So sage ich dir einfach, nimm die Summe und addiere mit PHP, das geht ja auch.

            Kommentar


            • #7
              Ich poste das gerne noch protestix, aber es ist wirklich nur die eine Tabelle mit wenigen Feldern,

              Id, ak1, ak2, name, mail

              und die Datenbank wird auch nur wenige Einträge enthalten. Und in ak1 und ak2 möchte ich die Anzahl der Einträge pro Wert haben. Die Werte können 1-40 annehmen. Ich würde die gerne direkt per SQL addieren und nicht nochmal per php addieren müssen.

              Kommentar


              • #8
                Warum kommt das denn in 2 Spalten vor
                Das ist so nicht normal, und Spalten durchzunummerieren zeugt von falschem DB Design.

                Kommentar


                • #9
                  Code:
                  test=*# select * from sinai ;
                   id | a | b
                  ----+---+---
                    1 | 1 | 4
                    2 | 1 | 5
                    3 | 4 | 1
                  (3 Zeilen)
                  
                  test=*# select zahl, count(sinai.*) from (select least(a,b) as zahl from sinai  union  select greatest(a,b) from sinai order by 1) foo left join sinai on (foo.zahl= sinai.a or foo.zahl = sinai.b) group by 1 order by 1;
                   zahl | count
                  ------+-------
                      1 |     3
                      4 |     2
                      5 |     1
                  (3 Zeilen)
                  könnte sogar selbst mit MySQL gehen, so einfach ...

                  PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

                  Kommentar


                  • #10
                    Zitat von protestix Beitrag anzeigen
                    Warum kommt das denn in 2 Spalten vor
                    Das ist so nicht normal, und Spalten durchzunummerieren zeugt von falschem DB Design.
                    stell Dir vor, das ist eine Spielauswertung zwischen 2 Mannschaften. Kommt ab und an vor, z.B. beim Fußball.
                    PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

                    Kommentar

                    Lädt...
                    X