Anzahl Datensätze / Spalte zählen

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

  • Anzahl Datensätze / Spalte zählen

    Hallo,

    um Datensätze (NICHT Zeilen!) in einer Tabelle zu zählen verwende ich folgende Befehle. Da meine Tabelle sehr viele Spalten hat, ist die Abfrage natürlich länger. Gibt es eine schnellere/elegantere Lösung, um herauszubekommen, wie viele Einträge in der Tabelle existieren?

    Wie gesagt geht es nicht um die Anzahl der Zeilen, welche man ja leicht mit $row = mysql_fetch_row($result); heraus bekommen könnte.

    PHP-Code:
    $result =  mysql_query("SELECT
    count(spalte1) as a,
    count(spalte2) as b,
    count(spalte3) as c
    FROM tabelle"
    );

    $array mysql_fetch_array($result);
    $anzahl $array['a']+$array['b']+$array['c']; 
    Gruss Sven

  • #2
    Re: Anzahl Datensätze / Spalte zählen

    Definiere bitte "Zeile", wenn du damit nicht Datensätze meinst.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      1. die zeilen sind im üblichen vokabular gerade die datensätze. dass einzelne zellen von count() nicht mitgezählt werden, liegt daran, dass sie den wert NULL tragen.

      2. du meinst mysql_num_rows();

      3. es geht nicht einfacher und du hast es selbst zu verantworten - i.d.r. lässt sich solch kaputtes datenbank-design mittels normalisierung vermeiden.

      Kommentar


      • #4
        Sorry, da habe ich mich doch ein wenig falsch ausgedrückt.

        Eine Tabelle hat mehrere Spalten.
        Nicht in jede Spalte gibt es Einträge. Also auch NULL Werte.
        Jetzt möchte ich die Summe aller Einträge ermitteln. Nicht die Anzahl der Zeilen (row)!

        id a b c

        1 d d
        2 c a
        3 f
        4 d

        Soll ergeben Summe = 6 (ohne die Spalte id)
        Zuletzt geändert von voodoo; 11.09.2006, 23:58.
        Gruss Sven

        Kommentar


        • #5
          mhm...wie sieht's damit aus:

          PHP-Code:
          $sql=mysql_query("SELECT * FROM tabelle");
          $count 0;
          while (
          $row mysql_fetch_array($sql,MYSQL_ASSOC)) {
           foreach(
          $row as $entry) {
            if (
          $entry!== NULL$count++;
           }
          }
          echo 
          $count
          Ist sicher nicht perfekt sollte doch aber gehen oder?
          Sollen auch leere Einträge mitgezählt werden kann man das ja noch entsprechend angeben. Diese Methode ist sicher günstiger als jede Spalte zu prüfen, da php dies automatisieren kann.
          Zuletzt geändert von ZombieChe; 12.09.2006, 07:49.

          Kommentar


          • #6
            Ließ nochmal Penizilin's Punkt 3 ... und dann versuch den zu verstehen ... !
            carpe noctem

            [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
            [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

            Kommentar


            • #7
              Sicher geht es einfacher! In seiner Abfrage zählt er jede Spalte einzeln aus. Hat er jetzt 1000 Spalten füllt seine Abfrage einige Seiten! durch das automatisiert durchgehen jedes Datensatzes (Zeile) braucht er dafür nur die paar von mir geschriebenen Zeilen, sprich er verzichtet ganz auf das lange schreiben jeder einzelnen Spalte, sofern ich sein Vorhaben richtig verstanden habe.

              Noch eine Anmerkung zu meinem Code: Da die id spalte nicht mitgezählt werden sollte einfach noch $count-- nach der foreach schleife einfügen.

              Kommentar


              • #8
                Ich danke Dir ZombieChe!
                Genau so meinte ich es.

                Weiss immer noch nicht, warum mein Datenbankdesign kaputt sein soll, wenn ich belegte Felder zählen möchte und den Schreibaufwand im Script drücken möchte... egal
                Gruss Sven

                Kommentar

                Lädt...
                X