???geschachtelte Ausgabe????

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

  • #16
    Was ist mit

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

    Ansonsten wie im ersten Post gesagt, schick mir den Dump.
    So wirds ansonsten voraussichtlich nichts draus.

    mfg

    Kommentar


    • #17
      das ist das ganz vom Anfang, oder?

      das haut auch nicht hin, schick dir mal den dump.

      Kommentar


      • #18
        und, hast sie bekommen

        Kommentar


        • #19
          aktueller code
          PHP-Code:
          $strSQL  "SELECT count(h.pk_asset) as hCount,count(p.pk_peripheral) as pCount, count(s.id) as sCount, ";
          $strSQL .= "a.name, h.pk_asset, s.id, p.pk_peripheral 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 a.id_abteilung=h.abteilung_fk AND a.id_abteilung=s.abteilung_fk AND a.id_abteilung=p.abteilung_fk "
          $strSQL .= "GROUP BY a.name ORDER BY a.name";

          $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, nun läuft er jede abteilung, in der software usw vorhanden ist durch, die, die keine enthalten lässt er weg.

          Problem:
          er läuft jede Abteilung nur einmal mit hardware software peripherie durch. Auch wenn ein pc mehrere peripherien enthält, gibt er nur die erste aus.

          Warum macht er immer nur einen schleifendurchlauf, sprich nur eine ausgabe?????

          Weiß jemand den Fehler, wäre wirklich sehr dankbar

          Kommentar


          • #20
            PHP-Code:
            <?php

            $host 
            "localhost"$login "bli"$pass "bla"$database "test2";

            $db mysql_connect($host$login$pass);

            $sql1="
            SELECT id_abteilung, name 
            FROM abteilung 
            ORDER BY name
            "
            ;
            $resultatarray1 mysql_db_query($database$sql1);
            $zeilenanzahl1 mysql_num_rows($resultatarray1);
            $spaltenanzahl1 mysql_num_fields($resultatarray1);

            While (
            $row1 mysql_fetch_array($resultatarray1))
            $arr1[]=array($row1[0], $row1[1]);

            for (
            $i=0$i<$zeilenanzahl1$i++)
            {
            $sql21="SELECT * FROM hardware WHERE abteilung_fk=".$arr1[$i][0];
            $sql22="SELECT * FROM software WHERE abteilung_fk=".$arr1[$i][0];
            $sql23="SELECT * FROM peripherals WHERE abteilung_fk=".$arr1[$i][0];
            $resultatarray21 mysql_db_query($database$sql21);
            $resultatarray22 mysql_db_query($database$sql22);
            $resultatarray23 mysql_db_query($database$sql23);
            $zeilenanzahl21 mysql_num_rows($resultatarray21);
            $zeilenanzahl22 mysql_num_rows($resultatarray22);
            $zeilenanzahl23 mysql_num_rows($resultatarray23);

            $arr1[$i][2]=$zeilenanzahl21;
            $arr1[$i][3]=$zeilenanzahl22;
            $arr1[$i][4]=$zeilenanzahl23;
            $arr1[$i][5]=$zeilenanzahl21+$zeilenanzahl22+$zeilenanzahl23;
            }

            mysql_close($db);

            for (
            $j=0$j<$zeilenanzahl1$j++)
            echo 
            "Abteilung: ".$arr1[$j][1]."<br>Anzahl Hardware: ".$arr1[$j][2]."<br> Anzahl Software: ".$arr1[$j][3]."<br>Anzahl 

            Peripherals: "
            .$arr1[$j][4]."<br>-----------------<br>Summe: ".$arr1[$j][5]."<br><br><br>";


            ?>
            ist nicht die hohe mysql-Schule, aber es funktioniert.

            mfg

            Kommentar


            • #21
              vielen dank, kanns jetzt leider nicht testen. werds morgen mal ausprobieren.


              MFG Andrea

              Kommentar


              • #22
                Habs doch noch geschafft mit einer mysql-query (verflucht und zugenäht ):

                SELECT
                a.name,
                count(distinct h.pk_asset) as anz_h,
                count(distinct s.id) as anz_s,
                count(distinct p.pk_peripheral) as anz_p,
                count(distinct h.pk_asset)+count(distinct s.id)+count(distinct p.pk_peripheral) as total
                FROM abteilung a
                LEFT JOIN hardware h ON (h.abteilung_fk=a.id_abteilung)
                LEFT JOIN software s ON (s.abteilung_fk=a.id_abteilung)
                LEFT JOIN peripherals p ON (p.abteilung_fk=a.id_abteilung)
                GROUP BY a.name
                ORDER BY a.name

                mfg

                Kommentar


                • #23
                  doch mit left join, werds gleich mal testen.

                  Kommentar


                  • #24
                    bei mir haut das nicht hin, gibt wieder nicht alle aus.

                    Kommentar


                    • #25
                      *grummel*
                      Ein paar Überlegungen solltest dir schon noch machen

                      PHP-Code:
                      <?php

                      $host 
                      "localhost"$login "bli"$pass "bla"$database "test2";

                      $db mysql_connect($host$login$pass);

                      $sql1="
                      SELECT 
                      a.name, 
                      count(distinct h.pk_asset) as anz_h, 
                      count(distinct s.id) as anz_s, 
                      count(distinct p.pk_peripheral) as anz_p, 
                      count(distinct h.pk_asset)+count(distinct s.id)+count(distinct p.pk_peripheral) as total 
                      FROM abteilung a 
                      LEFT JOIN hardware h ON (h.abteilung_fk=a.id_abteilung) 
                      LEFT JOIN software s ON (s.abteilung_fk=a.id_abteilung) 
                      LEFT JOIN peripherals p ON (p.abteilung_fk=a.id_abteilung) 
                      GROUP BY a.name 
                      ORDER BY a.name
                      "
                      ;
                      $resultatarray1 mysql_db_query($database$sql1);
                      $zeilenanzahl1 mysql_num_rows($resultatarray1);
                      $spaltenanzahl1 mysql_num_fields($resultatarray1);

                      mysql_close($db);

                      While (
                      $row1 mysql_fetch_array($resultatarray1))
                      echo 
                      "Abteilung: ".$row1[0]."<br>Anzahl Hardware: ".$row1[1]."<br> Anzahl Software: ".$row1[2]."<br>Anzahl Peripherals: 

                      "
                      .$row1[3]."<br>-----------------<br>Summe: ".$row1[4]."<br><br><br>";

                      ?>

                      Kommentar


                      • #26
                        ich hatte es so

                        PHP-Code:
                        <?$intSecurity = 2;
                        $intTimeOut = 1800;
                        $strPageTitle = "Statistics";
                        include "includes/security.inc.php";
                        include "includes/db.inc.php";
                        include "includes/functions.inc.php";
                        include "includes/header.inc.php";

                        $strSQL  = "SELECT a.name, h.pk_asset, s.id, p.pk_peripheral, ";
                        $strSQL .= "count(distinct h.pk_asset) as anz_h, ";
                        $strSQL .= "count(distinct s.id) as anz_s, ";
                        $strSQL .= "count(distinct p.pk_peripheral) as anz_p, ";
                        $strSQL .= "count(distinct h.pk_asset)+count(distinct s.id)+count(distinct p.pk_peripheral) as total ";
                        $strSQL .= "FROM Abteilung a ";
                        $strSQL .= "LEFT JOIN hardware h ON (h.abteilung_fk=a.id_abteilung) ";
                        $strSQL .= "LEFT JOIN software s ON (s.abteilung_fk=a.id_abteilung) ";
                        $strSQL .= "LEFT JOIN peripherals p ON (p.abteilung_fk=a.id_abteilung) ";
                        $strSQL .= "GROUP BY a.name ORDER BY a.name ";


                        $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["anz_h"]);

                        echo "<center>Anzahl: <font size='-1'>&nbsp;total</font></center>";

                        }
                        echo "<p align='right'><font size='-1'>Gesamtanzahl: $i </font></p>";

                        ?>
                        ich versteh jetzt nicht so ganz, wofür ich die zeilen und spalten benötige
                        Zuletzt geändert von Schneggo; 09.09.2002, 09:50.

                        Kommentar


                        • #27
                          ich kriegs nicht hin

                          ich habs leider immer noch nicht geschafft, und schön langsam bin ich wirklich am verzweifeln. Das kann doch nicht sein!

                          Kommentar


                          • #28
                            Was du willst funktioniert nicht in einer einzigen Query, da musst du mehrere machen und die erhaltenen Resultate der ersten Query in der nächsten verwursten und dann halt mit einem Gebastel/Schleife alle deine Daten rausfischen.
                            Du kannst nicht die Zusammenfassung und die Details gleichzeitig in einer Query haben, sinngemäss.
                            Und falls es doch funktionieren sollte, dann musst du den Aufwand in dem Auseinanderdividieren der Resultate betreiben.

                            z.B. funktioniert folgendes nicht:
                            SELECT name, count(name) from Abteilung

                            Weil name mehrere Werte liefert, count(name) jedoch nur einer. Sowas lässt sich nicht mit mysql machen.
                            Du kannst nur Werte finden, für die die Query dir pro Zeile in jeder Spalte x,y (also für jedes select x,y) eine gleiche Anzahl Werte liefert.

                            Konkret in deinem Fall kannst du z.B. noch a.id_abteilung mit der obigen Query rausfischen, das funktioniert.
                            Anhand dieser ID kannst du dann mit den Resultaten der Query diese ID in einen Link umfunktionieren/hineinpacken, der dir dann beim Aufrufen des Links die Query startet, die dir die Details dieser ID/Abteilung liefert.

                            Definiere wenigstens mal was du genau willst. "Ich schaffs nicht" ist nicht ganz ausreichend.

                            mfg

                            Kommentar


                            • #29
                              also ich habs jetzt für jedes einzeln programmiert:

                              HARDWARE:
                              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>"
                              SOFTWARE:
                              PHP-Code:
                              $strSQL "SELECT count(s.id) as sCount,  a.name FROM ";
                              $strSQL .= "Abteilung as a, software as s, software_types as st WHERE st.id=s.type_id AND s.abteilung_fk=a.id_abteilung ";
                              $strSQL .= "GROUP BY a.id_abteilung";

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

                              $i += $row["sCount"];

                              }echo 
                              "<p align='right'><font size='-1'>Gesamtanzahl: $i </font></p>"
                              PERIPHERIE:
                              PHP-Code:
                              $strSQL "SELECT count(p.pk_peripheral) as pCount, a.name FROM ";
                              $strSQL .= "Abteilung as a, peripherals as p, peripheral_types as pt WHERE pt.peripheral_pk=p.peripheral_fk AND p.abteilung_fk=a.id_abteilung ";
                              $strSQL .= "GROUP BY a.id_abteilung";

                              $result dbquery($strSQL);
                              echo 
                              "<i><u>Listing by Departments:</i></u>";
                              echo 
                              "<p>";
                              $i=0;
                              While (
                              $row mysql_fetch_array($result)){
                              echo 
                              "<font size='-1'>&nbsp;".$row["name"]."</font>";
                              echo 
                              ShowRating ($row["pCount"]);
                              echo 
                              "<center>Anzahl: <font size='-1'>&nbsp;".$row["pCount"]."</font></center>";
                              $i += $row["pCount"];

                              }
                              echo 
                              "<p align='right'><font size='-1'>Gesamtanzahl: $i </font></p>"
                              Nur mein Problem ist jetzt, ich weiß nicht, wie ich die unter einen Hut bekomme?

                              Könnte mir da bitte jemand helfen?

                              Kommentar


                              • #30
                                mit SELECT DISTINCT die Abteilungen auslesen und in ein Array packen dann mit foreach über dieses Array in drei Durchgängen die Daten für Hardware, Software etc. auslesen,
                                mit WHERE dabei die Abt. abfragen.


                                würde es so hinhauen??

                                Kommentar

                                Lädt...
                                X