???geschachtelte Ausgabe????

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

  • ???geschachtelte Ausgabe????

    Hallo,
    ich möchte eine Statistik machen, in der folgendes ausgegeben wird.

    Als erstes sollen die einzelnen Bestandteile nach Abteilungen geordnet werden. Das habe ich bereits mit folgendem Code hinbekommen.

    PHP-Code:
    <?
    $strSQL = "SELECT count(h.pk_asset) as hCount,  a.name FROM ";
    $strSQL .= "Abteilung as a, hardware as h, hw_types as ht WHERE ht.type_pk=h.type AND h.abteilung_fk=a.id_abteilung ";
    $strSQL .= "GROUP BY a.id_abteilung";

    $result = dbquery($strSQL);
    echo "<u><b>Hardware:</b></u>";
    echo "<p>";
    $i=0;
    While ($row = mysql_fetch_array($result)){
    echo "<font size='-1'>&nbsp;".$row["name"]."</font>";
    echo ShowRating ($row["hCount"]);
    echo "<center>Anzahl: <font size='-1'>&nbsp;".$row["hCount"]."</font></center>";
    $i += $row["hCount"];
    }
    echo "<p align='right'><font size='-1'>Gesamtanzahl: $i </font></p>";




    ?>
    Aber ich krieg es nicht hin, sie alle untereinander aufzuführen, wie im Beispiel unten. So, wie ich es gemacht habe, bekomme ich nur die Ausgabe von Peripherals. Ich möchte aber immer unter einer Abteilung alle Hardware, Software, Peripherie, die zu dieser gehört aufgelistet haben.


    - Abteilung
    Säule [Hardware Anzahl: ]
    Säule [Software Anzahl:]
    Säule [Peripherals Anzahl:]

    - Abteilung

    usw...

    Hardware: gesamtanzahl;
    Software: gesamtanzahl;
    Peripherals: gesamtanzahl;

    Wenn man es noch genauer wissen will, soll man einem Link folgen, der dann folgende Ausgabe bringt.

    - Abteilung:
    -Hardware:
    Säule [Software Anzahl:]
    Säule [Peripherie Anzahl:]

    usw.........

    Kann mir da bitte jemand helfen, leg die Datenbank bei, damit ihr einen überblick bekommt.
    Ich danke euch jetzt schon vielmals!!
    Angehängte Dateien
    Zuletzt geändert von Schneggo; 05.09.2002, 09:32.

  • #2
    hallo,

    kann das sein das der Computer die Ausgabe immer überschreibt, weil in der Zeile:

    echo "<center>Anzahl: <font size='-1'>&nbsp;".$row["hCount"]."</font></center>";
    das <br> hintendran fehlt:

    echo "<center>Anzahl: <font size='-1'>&nbsp;".$row["hCount"]."</font></center><BR>";

    Kommentar


    • #3
      also der code oben funktioniert einwandfrei.

      Kommentar


      • #4
        es soll mir hier ja nicht der code verfasst werden, ich brauch nur einen denkanstoss, wie ich es verknüpfen muss usw.

        oder versteht keiner, was ich genau will?

        Kommentar


        • #5
          ich dreh hier echt gleich durch, ich schaff es nicht.

          kann mir keiner sagen, wie es geht?? Brauch ich dazu joins oder geht es auch so, wie ich angefangen habe??

          Kommentar


          • #6
            PHP-Code:
            $strSQL  "SELECT count(h.pk_asset) as hCount,count(p.pk_peripheral) as pCount, count(s.id) as sCount, ";
            $strSQL .= "a.name FROM ";
            $strSQL .= "Abteilung as a, hardware as h, hw_types as ht, peripherals as p, software as s, ";
            $strSQL .= "peripheral_types as pt, software_types as st ";
            $strSQL .= "WHERE ht.type_pk=h.type AND h.abteilung_fk=a.id_abteilung AND h.pk_asset=p.fk_asset AND ";
            $strSQL .= "p.peripheral_fk=pt.peripheral_pk AND s.type_id=st.id  "
            $strSQL .= "GROUP BY a.id_abteilung";

            $result dbquery($strSQL);
            echo 
            "<u><b>Hardware:</b></u>";
            echo 
            "<p>";
            $i=0;
            While (
            $row mysql_fetch_array($result)){
            echo 
            "<font size='-1'>&nbsp;".$row["name"]."</font>";
            echo 
            ShowRating ($row["hCount"]);
            echo 
            "<center>Anzahl: <font size='-1'>&nbsp;".$row["hCount"]."</font></center>";
            $i += $row["hCount"];
            }
            echo 
            "<p align='right'><font size='-1'>Gesamtanzahl: $i </font></p>";

            ?> 
            Hier mal mein jetztiger code, eigentlich sollte er jetzt alle peripherien, software und hardware von einer abteilung ausgeben, es müssten 16 sein und 24 gibt er mir aus, weiß irgendjemand, waron das liegen könnte??

            Kommentar


            • #7
              habs nochmal ein bisschen geändert.


              PHP-Code:
              $result dbquery($strSQL);
              echo 
              "<u><b>Hardware:</b></u>";
              echo 
              "<p>";
              $i=0;
              While (
              $row mysql_fetch_array($result)){
              echo 
              "<font size='-1'><u>&nbsp;".$row["name"]."</u></font><p>";
              echo 
              "<font size='-1'>Hardware &nbsp;".$row["pk_asset"]."</font><p>";
              echo 
              "<font size='-1'>Software &nbsp;".$row["id"]."</font><p>";
              echo 
              "<font size='-1'>Per &nbsp;".$row["pk_peripheral"]."</font><p>";
              echo 
              ShowRating ($row["hCount"]);
              $j $row["hCount"]+$row["pCount"]+$row["sCount"];
              echo 
              "<center>Anzahl: <font size='-1'>&nbsp;$j</font></center>";
              $i += $row["hCount"];
              $i += $row["pCount"];
              $i += $row["sCount"];
              }
              echo 
              "<p align='right'><font size='-1'>Gesamtanzahl: $i </font></p>"
              also folgendes, hab mir die ganzen sachen jetzt ausgeben lassen. und er ordnet das schon richtig zu, nur macht er bei jeder abteilung nur einen durchlauf???
              Woran liegt jetzt das wieder??

              Vielleicht jemand ne Idee
              Zuletzt geändert von Schneggo; 05.09.2002, 15:12.

              Kommentar


              • #8
                Hallo
                Also ich hab deine Posts in letzter Zeit schon verfolgt, mit deinem Kampf gegen peripherals usw.

                Allerdings war mein Fazit immer, dass man einfach nicht draus kommt, was du willst. Weil nämlich deine Angaben einfach zu dürftig waren, um sich ein Bild der ganzen Angelegenheit machen zu können. Solange man nicht das Konzept der Tables sieht, kann man nur mutmassen, was du willst.

                Mit deinem Anhang3.zip wirds nun mal deutlich klarer, was deine Absichten sind.

                Ich schaue es mir mal an, vllt. weiss ich noch was dazu später (falls es nicht Stunden kostet )

                mfg

                Kommentar


                • #9
                  Der Kampf geht weiter

                  Hier mal die Ausgabe, die er bringt

                  -----------------------------
                  SparePart

                  Hardware 56

                  Software 30

                  Per 25

                  Anzahl: 6
                  ----------------------------------------------------------

                  Marketing
                  Hardware 55

                  Software 32

                  Per 37


                  Anzahl: 3
                  ------------------------------------------------------------
                  Gesamtanzahl: 9
                  -----------------------------

                  Als erstes müssen es 16 sein, hier kommt als gesamtanzahl 9 raus, und die Auflistungen stimmen auch nicht, da oben ja eigentlich 6 sein müssten.

                  ich komm da einfach nicht drauf

                  ach ja, und eine Abteilung fehlt ganz.

                  Kommentar


                  • #10
                    $sql="
                    SELECT a.name, count(h.pk_asset) as anz_hw, count(s.id) as anz_sw, count(p.pk_peripheral) as anz_pe, SUM(anz_hw,anz_sw,anz_pe) as summe
                    FROM Abteilung a, hardware h, software s, peripherals p
                    GROUP BY a.name ORDER BY a.name
                    ";

                    // resultat mit $sql erzeugen

                    While ($row = mysql_fetch_array($result))
                    echo "Abteilung: ".$row[0]."<br>Anzahl Hardware: ".$row[1]."<br> Anzahl Software: ".$row[2]."<br>Anzahl Peripherals: ".$row[3]."<br>-----------------<br>Summe: ".$row[4]."<br><br><br>";


                    ************************

                    ob das mit dem SUM() funktioniert weiss ich nicht, ansonsten lasse es einfach mal weg fürs erste.

                    Der weitere anklickbare Link zur HW/SW/PE müsstest du noch definieren (was damit aufgerufen werden soll)

                    Wenn du willst kannst du mir alle Datenbanken als blabla.sql (dump) mit Email zustellen (falls die Sachen nicht funktioniert), dann kann ichs genauer anschauen. erdoes@gmx.ch
                    mfg
                    Zuletzt geändert von CHnuschti; 06.09.2002, 11:11.

                    Kommentar


                    • #11
                      vielen dank erstmal, also das mit der summe haut nicht hin, ist aber nciht so schlimm. das krieg ich dann noch selber hin.

                      die abteilungen macht er jetzt richtig.

                      problem ist nur, dass er als anzahl immer 144 ausgibt, egal wo sie steht.

                      Kommentar


                      • #12
                        kurze verbesserung, gibt auch abteilungen aus, in denen nix drinnen steht.

                        Kommentar


                        • #13
                          so, hab jetzt ein wenig rumprobiert und es liegt an der select, wie muss ich denn die tabellen verknüpfen, dass das hinhaut. je nachdem, wie ich die wähle, kommen mehr oder weniger aber nei die richtige anzahl

                          folgende Ausgabe kommt jetzt
                          Abteilung: Marketing
                          Anzahl Hardware: 1
                          Anzahl Software: 1
                          Anzahl Peripherals: 1
                          -----------------



                          Abteilung: SparePart
                          Anzahl Hardware: 2
                          Anzahl Software: 2
                          Anzahl Peripherals: 2
                          -----------------


                          PHP-Code:
                          $strSQL  "SELECT a.name, count(h.pk_asset) as anz_hw, count(s.id) as anz_sw, count(p.pk_peripheral) as anz_pe ";
                          $strSQL .= "FROM Abteilung as a, hardware as h, hw_types as ht, peripherals as p, software as s, ";
                          $strSQL .= "peripheral_types as pt, software_types as st ";
                          $strSQL .= "WHERE ht.type_pk=h.type AND h.abteilung_fk=a.id_abteilung AND h.pk_asset=p.fk_asset AND ";
                          $strSQL .= "p.peripheral_fk=pt.peripheral_pk AND s.type_id=st.id AND h.pk_asset=s.hardware_id "
                          $strSQL .= "GROUP BY a.name ORDER BY a.name";


                          $result dbquery($strSQL);
                          echo 
                          "<u><b>Hardware:</b></u>";
                          echo 
                          "<p>";

                          While (
                          $row mysql_fetch_array($result))
                          echo 
                          "Abteilung: ".$row[0]."<br>Anzahl Hardware: ".$row[1]."<br> Anzahl Software: ".$row[2]."<br>Anzahl Peripherals: ".$row[3]."<br>-----------------<br><br><br><br>"

                          Kommentar


                          • #14
                            Eine andere Variante wäre (Die Auswertung bleibt gleich):

                            SELECT
                            a.name, count(h.pk_asset) as anz_hw, count(s.id) as anz_sw, count(p.pk_peripheral) as anz_pe, SUM(anz_hw,anz_sw,anz_pe) as summe
                            FROM Abteilung a
                            LEFT JOIN hardware h ON a.id_abteilung=h.abteilung_fk
                            LEFT JOIN software s ON a.id_abteilung=s.abteilung_fk
                            LEFT JOIN peripherals p ON a.id_abteilung=p.abteilung_fk
                            GROUP BY a.name ORDER BY a.name

                            Kommentar


                            • #15
                              da kommt jetzt folgender fehler

                              Error: Not unique table/alias: 'h'

                              Kommentar

                              Lädt...
                              X