2 Tabellen verbinden (Join?)

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

  • 2 Tabellen verbinden (Join?)

    Hey, habe eine Frage und hab mich dafür hier angemeldet, da ich mir hier Hilfe verspreche :P

    Also zu meiner Frage:
    (Man beachte ich bin recht neu bei PHP und hab vorher fast nur mit HTML und CSS gearbeitet und nur manchmal mit PHP)

    Ich habe 2 Tabellen in meiner Datenbank. Hier ein Beispiel:

    Personen

    # ID # Name # Gruppe
    ----------------------
    # 1 # Hans # 1
    # 2 # Peter # 2
    # 3 # Simon # 3
    # 4 # Max # 2

    Gruppe

    # gID # gName
    ----------------
    # 1 # Gruppe1
    # 2 # Gruppe2
    # 3 # Gruppe3

    Wie bekomme ich es jetzt hin, dass das ganze in etwa so ausgegeben wird:

    Gruppe 1:
    - Hans

    Gruppe 2:
    - Peter
    - Max

    Gruppe 3:
    - Simon

    Wie bekomme ich das ganze jetzt automatisch ausgegeben? Ich hab über Google gefunden, dass es mit JOIN gehen sollte, aber wirklich geholfen hat mir das auch nicht. Führt ein Weg an JOIN vorbei oder muss ich mich damit wirklich auseinander setzen? Da ich JOIN nicht direkt verstanden hab, wie es funktioniert, wäre mir ersteres lieber.. bzw. wenn ich JOIN benutze, kommt das doch aufs gleiche Raus, wie wenn ich in einer Datenbank alles stehen hätte, wie bekäme ich dass dann von PHP so ausgegeben, dass es nicht so aussieht?

    Hans Gruppe 1
    Peter Gruppe 2
    Simon Gruppe 3
    Max Gruppe 2

    Sondern wie oben genannt..?

    Danke schon mal im Vorraus

    - Basti

    Edit: Falschen Beitrag editiert
    Zuletzt geändert von basti231; 30.06.2011, 17:34.

  • #2
    Zitat von basti231 Beitrag anzeigen
    Führt ein Weg an JOIN vorbei oder muss ich mich damit wirklich auseinander setzen?
    Ja, musst bzw. solltest du.

    SELFHTML Artikel / Datenbanken

    wie bekäme ich dass dann von PHP so ausgegeben, dass es nicht so aussieht?
    Gruppenbruch (Standardverfahren) - PHP.de Wiki
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Oh man ... wie ich Dich vermißt habe ...
      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


      • #4
        OffTopic:
        @goth
        sprichst du mit dir selbst?


        Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
        Schön - etwas Geschichte kann ja nicht schaden.
        Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

        Kommentar


        • #5
          Wenn ich es jetzt richtig verstanden habe, dass sollte mein JOIN jetzt so aussehen:

          SELECT
          ID, Name, Gruppe, gID, gName
          FROM
          Gruppe
          LEFT JOIN
          Personen ON Personen.Gruppe = Gruppe.gID

          Dabei würde dann das raus kommen:
          # ID # Name # Gruppe # gName
          ----------------------------
          # 1 # Hans # 1 # Gruppe1
          # 2 # Peter # 2 # Gruppe2
          # 3 # Simon # 3 # Gruppe3
          # 4 # Max # 2 # Gruppe2

          ist das richtig?

          Wenn das schon mal klappen würde, das mit dem Gruppenumbruch im Zusammenhang mit Datenbanken hab ich noch nicht ganz verstanden, scheint aber das zu sein wonach ich suche.. mein erstes Problem ist aber, dass ich nicht weiß, wie das Beispiel mit MySQLi aussehen würde

          Der Gruppenumbruch ist eigentlich das was ich suche, wenn ich es richtig verstanden habe, aber verstanden habe ich es nicht wirklich

          Das ist das was ich dabei raus bekommen hab, ich komm allerdings nicht weiter:
          [SPOILER]
          PHP-Code:

          // Config:
          $DBHost "localhost";
          $DBUser "root";
          $DBPW "";
          $DBDatabase "test";

          // Verbindung

          $mysqli = new mysqli("$DBHost""$DBUser""$DBPw""$DBDatabase");
          if (
          $mysqli->connect_error) {
          echo 
          "Error: " mysqli_connect_error();
          exit();
          }

          $ergebnis $mysqli->query("SELECT ID, Name, Gruppe, gID, gName FROM Gruppe LEFT JOIN Personen ON Personen.Gruppe = Gruppe.gID");

          // Gruppenumbruch
          $index 0// Wofür genau ist das index = 0 ?
          $content ''// soll ich das frei lassen?

          while($row $ergebnis->fetch_array()) { // hier fängt mein Problem schon an, ich habe SQL Ausgaben nur mit mysqli gelernt und die while Schleife sieht schon anders aus :S

              
          $content .= '<td>' $set['output'] . '</td>'// output müsste in dem Fall dann "gName" von mir sein?
           
              // Zählermodulo, gültig alle 3 Schleifendurchläufe
              
          if (== ($index 3)) {
                  
          $content .= '</tr><tr>';
              }
           
              
          $index++;
          }
           
          if (
          false === empty ($content)) {
              echo 
          '<table><tr>' $content '</tr></table>';
          }

          // Gruppenumbruch Ende

          $ergebnis->close();
          $mysqli->close();
          ?> 
          [/SPOILER]

          Wie müsste ich das jetzt (am besten mit PHP und MySQLi ) lösen, dass ich, sobald ich eine Gruppe in der Gruppendatenbank erstelle, diese Aufgelistet wird und dann unter der entsprechenden Gruppe die Personen, welche in der Personen Tabelle die Gruppen ID zugewiesen bekommen haben. Also so:

          Gruppe
          - Gruppen Mitglied
          - Gruppen Mitglied

          Gruppe
          - Gruppen Mitglied
          - Gruppen Mitglied

          Gruppe
          - Gruppen Mitglied
          - Gruppen Mitglied

          usw..

          wäre echt nett, wenn mir einer einen fertigen Code, für das was ich suche, (mit Erklärung, was was macht (Sonst lerne ich ja nichts davon)) geben könnte..

          Edit: Schade Spoiler bb Code gibts hier nicht^^
          Zuletzt geändert von basti231; 30.06.2011, 17:35.

          Kommentar


          • #6
            Erstens: Bitte Code umbrechen, wie es in den Regeln steht.

            Zitat von basti231 Beitrag anzeigen
            ist das richtig?
            Testen, dann mehr wissen.

            mein erstes Problem ist aber, dass ich nicht weiß, wie das Beispiel mit MySQLi aussehen würde
            Eine Schleife über ein Array durch eine Schleife über die Ergebnisse einer Datenbankabfrage auszutauschen, solltest du hinbekommen.

            Der Gruppenumbruch ist eigentlich das was ich suche, wenn ich es richtig verstanden habe, aber verstanden habe ich es nicht wirklich
            Der Gruppenbruch ist ein ziemlich simples Programmier-Prinzip.

            Du machst dabei nichts anderes, als das, was du auch „von Hand“ machen würdest, wenn du die Aufgabe auf einem Blatt Papier durchführen solltest: Du durchläufst eine geordnete Menge von Werten, und die Entscheidung darüber, ob du eine „Überschrift“ hin schreibst, bevor du einen Wert hinschreibst, machst du vom Vergleich eines Kriteriums des aktuellen Wertes mit dem „gemerkten“ des vorherigen abhängig.

            wäre echt nett, wenn mir einer einen fertigen Code, für das was ich suche, (mit Erklärung, was was macht (Sonst lerne ich ja nichts davon)) geben könnte..
            Nope.
            Was lernen tust du vor allem dann, wenn du das selber umsetzt.

            Wenn du noch nicht so weit bist, dass du das Prinzip verstehen und halbwegs anwenden kannst - dann hast dir wohl zu viel vorgenommen. Dann ist erst mal Beschäftigung mit den Grundlagen angesagt.

            Wenn du einen konkreten Ansatz hast - und dein Problem mit diesem besser als mit „hier komm ich nicht weiter“ beschreiben kannst - dann können wir die Diskussion fortsetzen.
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #7
              Zitat von Quetschi Beitrag anzeigen
              OffTopic:
              @goth
              sprichst du mit dir selbst?


              Nein ... mit wahsaga natürlich ...
              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