Gruppierung von Datensätzen

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

  • Gruppierung von Datensätzen

    Ich habe 2 Tabellen

    1) drink (ID|Name|Kategorie|Preis|)
    2) kategorie(ID|Kategorie)


    mithilfe der zweiten Tabelle kann ich ja die anzahl der kategorien herausfinden. nun möchte ich jede kategorie als einen block ausgeben und zwar mit den daten aus der ersten tabelle und nur dann wenn es daten zu der jeweiligen kategorie gibt


    wie mache ich das am besten????

    THX

    JOat
    the end comes faster than you think - you've already reached it!

  • #2
    Ich weiß nicht ob's das ist was Du gemeint hast ... ich würd sowas probieren:
    PHP-Code:
    $stat "
    SELECT k.ID k_id, k.Kategorie k_kategorie, d.ID d_id, d.Name d_name, d.Preis d_preis
      FROM kategorie k
     INNER JOIN drink d
        ON k.ID = d.Kategorie
     ORDER BY k.ID, d.Name"
    ;

    $last "";
    if ( 
    $res mysql_query($stat) ) {
        while ( 
    $row mysql_query_object($res) ) {
            if ( 
    $row->k_id != $last ) {
                echo 
    "<b>$row->k_kategorie</b><br />\n";
                
    $last $row->k_id;
            }
            echo 
    "$row->d_name$row->d_preis<br />\n";
        }
        
    mysql_free_result($res);

    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


    • #3
      also ich hab jetzt einfach mal Copy Paste gemacht...


      PHP-Code:
      <?

      //--- CONFIG ------------------------------------------------

      $benutzer= "";  //MySQL USER
      $passwort= "";  //MySQL PASS
      $db = "killy";  //MySQL DATENBANK

      //--- CONFIG ENDE -------------------------------------------

      $link= mysql_connect( "localhost", $benutzer, $passwort );
      if ( ! $link)
       {
       die( "Keine verbindung mit dem Server");
       }
      mysql_select_db( $db )
       or die( "Keine verbindung zur Datenbank $db: ".mysql_error() );
      //--- CONNECT ENDE ------------------------------------------



      $stat = "
      SELECT k.ID k_id, k.Kategorie k_kategorie, d.ID d_id, d.Name d_name, d.Preis d_preis
        FROM kategorie k
       INNER JOIN drink d
          ON k.ID = d.Kategorie
       ORDER BY k.ID, d.Name";

      $last = "";
      if ( $res = mysql_query($stat) ) {
          while ( $row = mysql_query_object($res) ) {
              if ( $row->k_id != $last ) {
                  echo "<b>$row->k_kategorie</b><br />\n";
                  $last = $row->k_id;
              }
              echo "$row->d_name: $row->d_preis<br />\n";
          }
          mysql_free_result($res);
      }


      ?>

      nur bekomme ich überhaupt nichts ausgegeben.....


      aber ich werde mir mal INNER JOIN Satement anschaun...


      THX JOat
      the end comes faster than you think - you've already reached it!

      Kommentar


      • #4
        probier mal ON k.Kategorie = d.Kategorie

        einfach nur copy & paste is nicht empfehlenswert, wenn du keine informationen lieferst, die die verbindung zwischen den beiden tabellen betreffen
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          Hmmnn ... hätte ich jetzt schon gedacht das der Fremdschlüssel "Kategorie" auf den PRIMARY verweist ... sonst mach der Tabellenentwurf wenig Sinn ...
          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


          • #6
            nich traurig sein, immer dran denken: die anderen sind nicht so intelligent wie du

            (hoffentlich hab ich mit meiner idee recht gehabt, sonst flieg ich grad bös auf die fresse )
            Ich denke, also bin ich. - Einige sind trotzdem...

            Kommentar


            • #7
              Original geschrieben von mrhappiness
              nich traurig sein, immer dran denken: die anderen sind nicht so intelligent wie du
              Das muß ich auch leider immer wieder feststellen ...
              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


              • #8
                OffTopic:
                nanana, das sind doch nicht etwa erste anzeichen eines rückfalls? *g*
                Ich denke, also bin ich. - Einige sind trotzdem...

                Kommentar


                • #9
                  Oups ...
                  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


                  • #10
                    ok... lassen wirs einfach....


                    ich mach das ganz anders....


                    ich häng einfach nochn feld mit dazu wo drinnsteht ob die kategorie angezeigt werden soll....


                    was zwar auch nicht die beste lösung ist aber da die daten stammdaten sind die sich nicht allzuoft verändern....



                    JOat
                    the end comes faster than you think - you've already reached it!

                    Kommentar


                    • #11
                      das geht aber auf jeden fall, geb einfach mal ein paar beispieldatensätze
                      Ich denke, also bin ich. - Einige sind trotzdem...

                      Kommentar


                      • #12
                        PHP-Code:
                        #
                        # Tabellenstruktur für Tabelle `kategorie`
                        #

                        CREATE TABLE kategorie (
                          
                        id int(11NOT NULL auto_increment,
                          
                        kategorie varchar(40NOT NULL default '',
                          
                        PRIMARY KEY  (id)
                        TYPE=MyISAM;

                        #
                        # Daten für Tabelle `kategorie`
                        #

                        INSERT INTO kategorie VALUES (1'Biere');
                        INSERT INTO kategorie VALUES (2'Flaschenbiere'); 
                        PHP-Code:
                        #
                        # Tabellenstruktur für Tabelle `drink`
                        #

                        CREATE TABLE drink (
                          
                        id int(11NOT NULL auto_increment,
                          
                        kategorie varchar(40) default NULL,
                          
                        name varchar(30) default NULL,
                          
                        menge1 varchar(5) default NULL,
                          
                        menge2 varchar(5) default NULL,
                          
                        preis1 varchar(5) default NULL,
                          
                        preis2 varchar(5) default NULL,
                          
                        PRIMARY KEY  (id)
                        TYPE=MyISAM;

                        #
                        # Daten für Tabelle `drink`
                        #

                        INSERT INTO drink VALUES (1'Biere''Beamish''0,5 l''0,3 l''3,70''2,60');
                        INSERT INTO drink VALUES (2'Biere''John Smiths''0,5 l''0,3 l''3,70''2,60');
                        INSERT INTO drink VALUES (3'Biere''Bayr. Hell''0,5 l''0,3 l''2,60''1,90');
                        INSERT INTO drink VALUES (4'Biere''Hefeweiߢier''0,5 l''0,3 l''2,60''1,90');
                        INSERT INTO drink VALUES (5'Biere''Radler''0,5 l''0,3 l''2,50''1,80');
                        INSERT INTO drink VALUES (6'Flaschenbiere''Newcastle Brown Ale''0,5 l''0,33''3,70''4,70'); 
                        the end comes faster than you think - you've already reached it!

                        Kommentar


                        • #13
                          Das Statement:
                          Code:
                          SELECT k.id k_id, k.kategorie k_kategorie, d.id d_id, d.name d_name, d.preis1 d_preis
                            FROM kategorie k
                           INNER JOIN drink d
                              ON k.kategorie = d.kategorie
                           ORDER BY k.id, d.name
                          sollte gehen ... aber es macht wenig Sinn den Datenbank-Entwurf so aufzuziehen ... !
                          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


                          • #14
                            nö.... ich bekomm wieder keine ausgabe....


                            ich werds jetzt einfach ganz anders machen....



                            aber trozdem DANKE!!!!

                            JOat
                            the end comes faster than you think - you've already reached it!

                            Kommentar


                            • #15
                              Ich habe 'ne JOat Datenbank eingerichtet ... und für die Tabellenstruktur Deine oben geposteten Statements verwendet ... bei mir wird die entsprechenden Liste korrekt angezeigt ...
                              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

                              Lädt...
                              X