Ankündigung

Einklappen
Keine Ankündigung bisher.

Daten miteinander verbinden

Einklappen

Neue Werbung 2019

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

  • Daten miteinander verbinden

    Hallo ,

    ich möchte einen Datensatz untereinander in Verbindung bringen.
    Als Beispiel,

    PHP-Code:
    Element1
    Element2
    Element3
    Element4
    Element5 
    Jetzt möchte ich z.B zu Element 1, die Elemente 2,3 und 4 hinzufügen und für Element 3, die Element 1,3 und 5.

    Jetzt ist es, aber mein Ziel nicht jedesmal ein die Daten mit den Inhalt zu speicheren, sondern nur eine Zuweisung, um Speicherplatz zu sparen.

    Ich habe mich schon versucht in ein paar JOIN Tutorials einzulesen aber irgendwie möchte, dass nicht funktionieren.

    Ich habe 3 Tabellen erstellt.
    Einmal Elemente A, Element B und eine für die Relation, die die Daten miteinander verknüfpen soll, aber irgendwie klappt die Zuweisung nicht so wie ich möchte.

    PHP-Code:
    SELECT
    Elemente A
    ,
    Elemente B,
    FROM
    Relation
    LEFT JOIN
    id_a 
    id_a_rel
    LEFT JOIN
    id_b 
    id_b_rel
    WHERE id_a_rel 
    id_b_rel AND id 
    So sind bis jetzt meine Gedankengänge dazu aufgebaut.
    Als Ziel möchte ich ja für ein bestimmtes Element alle passenden Elemente dazu ausgeben.

    Gruß
    phpbot

  • #2
    Jetzt möchte ich z.B zu Element 1, die Elemente 2,3 und 4 hinzufügen und für Element 3, die Element 1,3 und 5.
    ...
    Ich habe 3 Tabellen erstellt.
    Einmal Elemente A, Element B und eine für die Relation, die die Daten miteinander verknüfpen soll, aber irgendwie klappt die Zuweisung nicht so wie ich möchte.
    Ähm... Wie ist die Logik für die Verknüpfung? Welche Spalten sind der gemeinsame Schlüssel? Du brauchst für JOIN immer eine Spalte die quasi der gemeinsame Indikator/Beziehungsschlüssel ist.
    Hast du ein Beispiel mit dem Datenmodell?
    The string "()()" is not palindrom but the String "())(" is.

    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
    PHP.de Wissenssammlung | Kein Support per PN

    Kommentar


    • #3
      Die Tabelle Relation soll die Verbindungen der einzelnen Elemente darstellen und mein Ziel ist es, dass ich z,B für Element 1 alle Verbindung ausgeben kann.

      Table1
      PHP-Code:
      id  element   zuweisung
      1  element1  id_1
      2  element2  id_2
      3  element3  id_3
      4  element4  id_4 
      Relation
      PHP-Code:
      element_id relation
      1              2
      1              3
      1              4
      2              3
      2              5
      3              2 
      Table2
      PHP-Code:
      id  element   zuweisung
      1  element1  id_1
      2  element2  id_2
      3  element3  id_3
      4  element4  id_4 

      Kommentar


      • #4
        Was macht denn die Spalte Zuweisung?

        Deine Relationstabelle sollte so aussehen:
        relation (Primärschlüssel, auto increment) | element1_id (Fremschlüssel, enthält Primärschlüssel von Table1) | element2_id (Fremschlüssel, enthält Primärschlüssel von Table2)

        Du solltest ein konkreteres Beispiel nutzen, damit wir auch die Relationen nachvollziehen können. Weiß nicht Recht was ich von den 3 Tabellen halten soll.

        Lernmaterial zu Join:
        [COLOR=#A9A9A9]Relax, you're doing fine.[/COLOR]
        [URL="http://php.net/"]RTFM[/URL] | [URL="http://php-de.github.io/"]php.de Wissenssammlung[/URL] | [URL="http://use-the-index-luke.com/de"]Datenbankindizes[/URL] | [URL="https://www.php.de/forum/webentwicklung/datenbanken/111631-bild-aus-datenbank-auslesen?p=1209079#post1209079"]Dateien in der DB?[/URL]

        Kommentar


        • #5
          Ich habe mir jetzt mal als passendes Beispiel eine Freundesliste überlegt.

          Ich habe einmal eine Liste mit allen Personen die vorhanden ist um eine Freundesliste zu haben, bzw die Personen, die sich untereinander als Freunde markieren können.

          Freunde
          PHP-Code:
          id Namen f_x(FREMDSCHLÜSSEL)
          1  Max     f_1
          2  Jonas   f_2
          3  Sandra f_3
          4  Jeff      f_4
          5  Kristina f_5 
          Relation
          PHP-Code:
          id r_x  rl_x
          1  f_1  fl_2
          2  f_1  fl_3
          4  f_1  fl_4 
          In diesem Beispiel hat nur Max eine Freundesliste und seine Freunde sind Jonas, Sandra und Jeff.

          Freundesliste
          PHP-Code:
          id Namen  fl_x(FREMDSCHLÜSSEL)
          1  Max      fl_1
          2  Jonas    fl_2
          3  Sandra  fl_3
          4  Jeff      fl_4
          5  Kristina fl_5 
          Und jetzt möchte ich ja alle Freunde von Max ausgeben.

          PHP-Code:
          SELECT
          r
          .r_x,
          r.rl_x,
          f.f_x,
          f.namen,
          fl.fl_x,
          fl.namen
          FROM
          relation r
          LEFT JOIN
          freunde f ON f
          .f_x r.r_x
          RIGHT JOIN freundesliste fl ON fl
          .fl_x r.rl_x 
          Aber ich bekomme nur NULL ausgespuckt
          Die Tabelle Relation enthält die Fremdschlüssel zu Freunde und Freundesliste.
          Mit einem LEFT JOIN verbinde ich Sie zueinander.

          Kommentar


          • #6
            Lösch die Spalten "f_x" und "fl_x" in den Freunde- und Freundesliste-Tabellen und ersetz die Spalten in der Relationstabelle und im Query durch die entsprechenden id-Spalten.

            Kommentar


            • #7
              Danke hat funktioniert

              Kommentar


              • #8
                Ich habe noch eine Frage zu der Relations Tablle, wenn ich Daten einfügen möchte.
                Das klappt alles, soweit ganz gut , aber ich weiß nicht wie ich verhindern kann das es zu doppelten Einträgen kommt.

                UNIQUE, fällt ja weg, aber ich muss ja irgendwie überprüfen können ob ein Eintrag vorhanden ist.

                Z.B
                PHP-Code:
                id r_x  rl_x 
                1  f_1  fl_2 
                2  f_1  fl_3 
                4  f_1  fl_4
                5  f_1  fl_2 
                Der Eintrag mit der ID 5 kommt jetzt ja doppelt vor.

                Kommentar


                • #9
                  Mach einfach INSERT IGNORE oder einen Primärschlüssel über alle 3 Spalten.

                  Kommentar


                  • #10
                    Zitat von phpbot Beitrag anzeigen
                    UNIQUE, fällt ja weg
                    Weil es nur für ein Feld gilt? Das kann sich auch auf mehrere beziehen.

                    Kommentar


                    • #11
                      Also, wenn ich mehrere Felder auf UNIQUE setze sind diese in Kombination dann UNIQUE ?

                      Kommentar


                      • #12
                        Du kannst vermutlich (hängt vielleicht vom genutzten Datenbanksystem ab, keine Ahnung) einen Index über mehrere Felder erstellen und den auf UNIQUE setzen.

                        Kommentar

                        Lädt...
                        X