Group By !

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Group By !

    hallo!

    habe 2 tabelen (1. Lagerprotokoll & 2. Artikelstamm) habe beide miteinander verknüpft und die auswertung funktioniert mittlerweile auch
    aber nun zu meinen problem (siehe vereinfacht darstellung)


    jetzt:

    Art.iD| Grund | Menge
    ---------------------------------------
    H1 | Ausgebucht | 100
    H1 | Eingebucht | 3
    H2 | Verschenkt | 50
    H3 | Schwund | 40

    so hätte ich es gern:

    Art.iD| Ausgebucht | Eingebucht | Verschenkt usw...
    --------------------------------------------------------------------
    H1 | 50 | 100 | 1
    H2 | 30 | 3 | 6
    H3 | 20 | 50 | 7

    habe es schon mit GROUP BY versucht aber leider habe ich das auch nicht hinbekommen hier der codeteil:


    PHP Code:
    WHERE $search_set_prot GROUP BY lager_prot.art_id,lager_prot.grund ORDER BY $ordnen $rank 

    wäre echt dankbar wenn mir hier wer weiterhelfen kann. danke schon mal
    lg


    hier mein aktueller code (vereinfacht)

    PHP Code:
    $prot_f=mysql_query("SELECT  
        
       lager_prot.prot_id,
       lager_prot.art_id,
       lager_prot.datum,
       lager_prot.grund,
       lager_prot.wert,
       lager_prot.menge,
       
       art.art_id,
       art.art_nr,
       art.art_haupt,
       art.prod_art,
       art.prod_gruppe
       
    FROM lager_prot,art WHERE $search_set_prot ORDER BY $ordnen $rank"); 
    while($row_prot=mysql_fetch_array($prot_f)) 

    $art_id=$row_prot[art_id]; 
    $menge=$row_prot[menge]; 
    $grund=$row_prot[grund]; 
    ?> 

    <input type="text" name="art_nr" value="<? echo $row_prot[art_nr]; ?>" />
    <input type="text" name="art_haupt" value="<? echo $row_prot[art_haupt]; ?>" />
    <input type="text" name="grund" value="<? echo $grund; ?>" />
    <input type="text" name="menge" value="<? echo $menge; ?>" />

  • #2
    Re: Group By !

    Original geschrieben von churcher


    PHP Code:
    WHERE $search_set_prot GROUP BY lager_prot.art_id,lager_prot.grund ORDER BY $ordnen $rank 
    WHERE art.art_id=lager_prot.art_id AND $search_set_prot ...

    Comment


    • #3
      hi!

      habe vergessen das hier noch zu posten:

      $search_set_prot="
      (art.art_haupt LIKE '%".$art_haupt."%') AND
      (lager_prot.datum BETWEEN '".$start_fs."' AND '".$ende_fs."' ) AND
      lager_prot.art_id=art.art_id";

      @asp2php so bekomme ich die lösung was ich habe wo alle einträge in einzelen zeilen aufgelsitet werden möchte aber das jeder artikel nur einmal da steht und die mengen aufsummiert werden für ausgebucht , eingebucht usw... hoffe du weißt was ich meine

      lg

      Comment


      • #4
        ,,,,,

        die fehlen bei dir :-) (evtl. hab ich auch eins zuvieloder zuwenig)


        was dein problem angeht:
        das wirst dumit mysql alleine nicht hinkriegen

        du musst nach den spalte artikelid und grund gruppieren und nach artikelid und grund sortieren

        in php machst du dann, solange die artikelid sich nicht ändert, eine neue spalte, anderenfalls eine neue zeile deiner ausgabetabelle
        Ich denke, also bin ich. - Einige sind trotzdem...

        Comment


        • #5
          stimmt bin ,,, faul :-)

          das habe ich befürchtet und nun weiß ich zwar wie das ziel aussieht,
          aber nicht wie ich hinkomme-

          die problematik sehe ich da noch bei der aufsummierung da ich ja mehrer datensätze nun zusammenfassen muss

          Comment


          • #6
            Original geschrieben von mrhappiness
            du musst nach den spalte artikelid und grund gruppieren und nach artikelid und grund sortieren

            in php machst du dann, solange die artikelid sich nicht ändert, eine neue spalte, anderenfalls eine neue zeile deiner ausgabetabelle
            probier's doch wenigstens mal
            Ich denke, also bin ich. - Einige sind trotzdem...

            Comment


            • #7
              @mrhappiness werde für heute schluss machen habe heute,
              schon 6 stunden mit diesem problem zu tun, werde morgen mit neuen
              kräften an das ganze ran gehen

              falls da noch fragen gibt, hoffe ich das ich mich da morgen noch melden darf

              wünsch auch was,
              lg

              Comment


              • #8
                Hallo churcher
                Geht mit SQL und if:

                select
                artid,
                sum(if (grund="Ausgebucht",menge,0)) as ausgebucht,
                sum(if (grund="Eingebucht",menge,0)) as eingebucht,
                sum(if (grund="Verschenkt",menge,0)) as verschenkt,
                sum(if (grund="Schwund",menge,0)) as schwund
                from ...
                where ...
                group by artid

                Comment


                • #9
                  danke genau so wie ich es wollte, vielen lieben dank

                  Comment

                  Working...
                  X