Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Unterkategorien werden nicht gezählt!

Einklappen

Neue Werbung 2019

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

  • #16
    nach allen spalten gruppieren, die nicht bestandteil der aggregatsfunktionen sind.

    Kommentar


    • #17
      So wenn du mir jetzt noch sagst was du mit aggregatsfunktionen meinst dann bin ich schon ein Stück weiter!
      Meinst du damit nachen allen Sachen gruppieren die ich nicht brauche um ein Ergebnis anzeigen zu lassen,oder habe ich das falsch verstanden?
      Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
      [URL]http://www.lit-web.de[/URL]

      Kommentar


      • #18
        also, das ist so simple und wird wahrscheinlich in den in Deiner Signatur verwendetetn tuts erklärt.
        daher-> grundlagen lernen...

        Kommentar


        • #19
          Also dann mal danke für deine Hilfe.

          Und wenn es da drin erklärt gewesen wäre dann hätte ich sicher danach nicht gefragt!

          Und ich denke den Großteil Grundliegender Sachen habe ich schon intus. Und das heist nicht das ich nichts mehr lernen muss,ich denke man lernt nie aus!

          mfg der Litter
          Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
          [URL]http://www.lit-web.de[/URL]

          Kommentar


          • #20
            Grundsätzlich müssen in einer Abfrage mit GROUP BY und Aggregatsfunktionen (COUNT, SUM, AVG, etc) alle Attribute, die ausgegeben werden sollen, auch in der GROUP BY-Klausel stehen. Ist ja auch logisch. Wenn du nach COUNT(parent_id) fragst, welche parent_id innerhalb von dieser Gruppe soll dann angezeigt werden? Im Gegensatz zu allen andern mir bekannten RDBMS's akzeptiert MySQL leider solche falschen Abfragen und liefert dann einfach ein Zufallsergebnis.
            Gruss
            L

            Kommentar


            • #21
              Also zum Verständnis!

              Ich will mir ja ausgeben lassen die id,parent_id,ncat,level,cat_id

              cat_id befindet sich in einem Count und parent_id befindet sich auch in einem Count!

              Die parent_id brauche ich ja um Kategorien auszuzählen und die cat_id um Datensätze auszuzählen! Die ncat um die Kategorienamen anzeigen zu lassen und das Level um die Links ausgeben zu lasen,entweder zu weiteren Kategorien oder ebend zu den Datensätzen die zu einer Kategorie gehören!

              Jetzt habe ich die Group By so geschrieben.

              PHP-Code:
              <?php
              $sqlbefehl 
              ="Select dc.id,dc.ncat,dc.parent_id,dc.level,dc.darf,df.cat_id, Count(df.cat_id) As anzahl, Count(dc.parent_id) As cat_anzahl
               From 
                
              $tab_dlcats dc
               Left Join 
                
              $tab_dlfiles df
               ON (dc.id = df.cat_id) 
               Where dc.parent_id ='"
              .$id."' Group By dc.id,dc.ncat,dc.parent_id,dc.level,df.cat_id";
              ?>
              Habe ich daher richtig verstanden was ihr meint oder liege ich falsch?
              Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
              [URL]http://www.lit-web.de[/URL]

              Kommentar


              • #22
                Zitat von litterauspirna Beitrag anzeigen
                Habe ich daher richtig verstanden was ihr meint oder liege ich falsch?
                Wenn schon
                PHP-Code:
                $sqlbefehl "
                    SELECT 
                        dc.id,
                        dc.ncat,
                        dc.parent_id,
                        dc.level,
                        dc.darf,
                        df.cat_id,
                        COUNT(df.cat_id) AS anzahl, 
                        COUNT(dc.parent_id) As cat_anzahl
                     FROM
                         tab_dlcats dc
                     LEFT JOIN 
                         tab_dlfiles df ON dc.id = df.cat_id 
                     WHERE 
                         dc.parent_id = 
                $id
                     GROUP BY 
                         dc.id,
                         dc.ncat,
                         dc.parent_id,
                         dc.level,
                         dc.darf,
                         df.cat_id"

                Aber da kannst du das GROUP BY auch grad weglassen, da die Zähler immer eins sein werden.
                Gruss
                L

                Kommentar


                • #23
                  Das Problem ist wenn ich das Group By weg lasse dann bekomme ich eine Fehlermeldung wo drin steht das das Group By vermisst wird!

                  Und zum anderen die Zähler stehen nicht generell auf 1.weil wenn Datensätze in einer Kategorie sind dann wird neben der Kategorie auch die Anzahl angezeigt. Sprich Kategorie Ferarie hat drei Datensätze dann steht daneben auch die 3!

                  Kategorie Ferarie,Porshce und Lamorgini sind in der Kategorie Autos und bei der Kategorie Autos wird da eine 0 angezeigt obwohl 3 Unterkategorien drin entahlten sind! Sprich ein Zähler funzt richtig und einer nicht!
                  Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
                  [URL]http://www.lit-web.de[/URL]

                  Kommentar


                  • #24
                    Zitat von litterauspirna Beitrag anzeigen
                    Kategorie Ferarie,Porshce und Lamorgini sind in der Kategorie Autos und bei der Kategorie Autos wird da eine 0 angezeigt obwohl 3 Unterkategorien drin entahlten sind!
                    Du zählst ja auch nicht die Unterkategorie, sondern die entsprechenden Elemente in tab_dlfiles, und da sind keine Unterkategorien vorhanden.
                    [OT]
                    Ausserdem: wer will denn solche Schrottkarren (Ferarie,Porshce und Lamorgini)?
                    Gruss
                    L

                    Kommentar


                    • #25
                      ich glaube dein ganzes verständnis von deinem problem ist nicht ganz korrekt
                      - du holst Dir mit deinem sql nicht die zusammengehörigen kategorien, es gibt keine verbindung über parent_id
                      - Da dein sql ohne count() bereits fehlerhaft ist kannst Du hier erstmal abbrechen, wenn Du die richtigen datensätze holst, kannst Du auch den count() einbauen mit der richtigen gruppierung...

                      Kommentar


                      • #26
                        Hallo Leute!

                        Ich habe es geschafft.

                        Nun werden Unterkategorien sowie auch Datensätze zu Kategorien je nach Fall gezählt!

                        Ich sende den Code mal mit falls es mal ein solches Problem gibt!

                        PHP-Code:
                        <?php
                        if (empty($_GET['id']))
                        {
                         
                        $id 0;
                        }
                        else
                        {
                         
                        $id $_GET['id'];
                        }
                        echo 
                        "<table cellpadding=\"0\" cellspacing=\"0\" width=\"500\" border=\"0\">";
                        //Abfrage der Tabellen dlcats und dlfiles 
                         
                        $sqlbefehl "
                            SELECT 
                                dc.id,
                                dc.ncat,
                                dc.parent_id,
                                dc.level,
                                dc.darf,
                                df.cat_id,
                                COUNT(df.cat_id) AS anzahl
                             FROM
                                 
                        $tab_dlcats dc
                             LEFT JOIN 
                                 
                        $tab_dlfiles df ON dc.id = df.cat_id 
                             WHERE 
                                 dc.parent_id = '"
                        .(int)$id."'
                             GROUP BY 
                                 dc.id,
                                 dc.ncat,
                                 dc.parent_id,
                                 dc.level,
                                 dc.darf,
                                 df.cat_id"
                        ;  
                         
                        $catanz mysql_query($sqlbefehl)or die(mysql_error().$sqlbefehl);
                         
                        $i =1;
                         while(
                        $cat mysql_fetch_array($catanz)){
                         
                        //Noch eine Abfrage um die Unterkategorien (parent_id) zu den Kategorien zu zählen
                         
                        $sqlbefehl ="
                           Select 
                            parent_id,
                            Count(parent_id) As ucat_anzahl 
                           From 
                            
                        $tab_dlcats 
                           Where 
                            parent_id='"
                        .(int)$cat['id']."'
                           Group By 
                            parent_id
                            "
                        ;
                         
                        $ergebnis_ucat mysql_query($sqlbefehl)or die(mysql_error().$sqlbefehl);
                         
                        $count_wert mysql_fetch_array($ergebnis_ucat);
                          
                          if(
                        $i==1){echo "<tr>";}
                          echo 
                        "<td align=\"center\" >";
                          echo 
                        "<table cellpadding=\"0\" cellspacing=\"0\" width=\"200\" border=\"0\">";
                          echo 
                        "<tr>";
                          echo 
                        "<td class=\"catshow\">";
                          
                        //wenn level nicht auf 1 steht wird er link der zu den unterkategorien führt ausgegeben
                          
                        if($cat['level']!=1)
                          {
                           echo 
                        "<a href=\"show_cats.php?id=".$cat['id']."\">".$cat['ncat']."";
                           echo 
                        " [";
                           
                        //hier sollen die unterkategorien zu den Kategorien gezählt 
                           //ausgegeben werden (klappt nicht)
                           //if($cat['id'] == $count_wert['parent_id'])
                           //{
                            
                        echo $count_wert['ucat_anzahl'];
                           
                        //}
                           
                        echo "]";
                           echo 
                        "</a>";
                          }
                          else
                          {
                           
                        //wenn level auf 1 steht wird wird der link angezeigt der zum den files führt
                           
                        echo "<a href=\"show_file.php?cat_id=".$cat['id']."\">".$cat['ncat']."";
                           echo 
                        " [";
                           
                        //Hier wird die ANzahl der Datensätze zu den Kategorien ausgegeben (klappt)
                            
                        echo $cat['anzahl'];
                           echo 
                        "]";
                           echo 
                        "</a>";
                          }
                          echo 
                        "</td>";
                          echo 
                        "</tr>";
                          echo 
                        "</table><br>";
                          echo 
                        "</td>";
                          if(
                        $i==2){echo"</tr>";$i=0;}
                          
                        $i++;
                        }
                        echo 
                        "</table>";
                        ?>
                        Danke noch mal all denen die mir geholfen haben.

                        mfg der Litter
                        Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
                        [URL]http://www.lit-web.de[/URL]

                        Kommentar

                        Lädt...
                        X