Fühlen einer Zwischentabelle, automatisch,wie?

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

  • Fühlen einer Zwischentabelle, automatisch,wie?

    Hi Leute,

    Würde eine Verknüpfung in dieser Weise gerne aufbauen, allerdings wie schaffe ich es das die IDs die ich in die Worttabelle und die Seitenztabelle auch automatisch in die Wortseitenrelationstabelle eingegeben werden? Steh gerade irgendwie auf der Leitung, gibt es da mehre Möglichkeiten oder muß man das "manuell" über eine Insert Funktion machen? Gibt es irgendwo ein Tut?Oder kann mir da jemand weiterhelfen? Oder muß man es bei jedem mal wenn man Daten in die Worttabelle und Seitentabelle auch eine Insert für die Wortseitenrelation ausführen?!

    Worttabelle ->
    +---------+------+
    | wort_id | wort |
    +---------+------+

    Wortseitenrelationstabelle ->
    +---------+----------+
    | wort_id | seite_id |
    +---------+----------+

    Seitetabelle ->
    +----------+-----+
    | seite_id | url |
    +----------+-----+
    M.f.G. Tragon

  • #2
    wie soll denn wort_id und seite_id zueinander stehen ?
    aber ich glaub ein insert befehl übermehrere taballen geht nicht in mysql 3.x
    meine Projekte bestaunen: http://www.kleiza.de

    Kommentar


    • #3
      Ich habe halt in einer Tabelle die "Inhalte", sagen wir in der Worttabelle und in der Seite Tabelle habe ich die Benutzer mit ihren spezifikationen bei denen sie einstellen können ob oder welcher Inhalt der Worttabelle angezeigt wird? Jetzt sollte ich aber jedem Inhalt bzw. Datensatz der Worttabelle mehrere Benutzereinstellungen zuordnen? Kann mir jemand weiterhelfen?
      M.f.G. Tragon

      Kommentar


      • #4
        Vorrausgesetzt du hast "wort" in der worttabelle auf "UNIQUE".

        PHP-Code:

        /**
        * Indizieren von Webseiten, hier sind die Wörter der Seite
        * im Array $woerter festgelegt und die seite_id = 1
        * Danach werden die Einträge verknüpft.
        */

        // Wörter, die im Inhalt der Seite 1) vorkommen .. hier kommt halt deine Routine hin
        $seite_id=1;
        $woerter=array("Wort1","Wort2");

        // Wörter einfügen
        mysql_query("REPLACE INTO worttabelle (wort) VALUES ('".implode("'),('",$woerter)."')");

        // Wortids auslesen
        $result=mysql_query("SELECT wort_id WHERE wort IN('".implode("','",$woerter)."')");

        $insertstring="";
        while(list(
        $wort_id)=mysql_fetch_array($result))
        {
        $insertstring.=",('$seite_id','$wort_id')";
        }

        // alte verknüpfungen löschen..
        mysql_query("DELETE FROM Wortseitenrelationstabelle WHERE seite_id=$seite_id");

        // verknüpfungen einfügen
        mysql_query("INSERT IGNORE INTO Wortseitenrelationstabelle (wort_id,seite_id) VALUES ".substr($insertstring,1));

        echo 
        "Seite indiziert."
        Zuletzt geändert von Troublegum; 29.09.2002, 20:20.
        [color="#334D7B"]"Los, lass uns loslegen! Hm ? Quatschen können wir hinterher immer noch!"[/color]
        [color="#9C5245"]"Aber Bommel, wir können jetzt nicht bumsen. Wir müssen doch erst den Kindern - ... "[/color]
        [color="#334D7B"]"Ja ja ja. Du willst immer nur das Eine. Buchstabenzeigen, Buchstabenzeigen - meine Gefühle sind dir wohl scheißegal."[/color]

        © Harald Schmidt

        Kommentar


        • #5
          Mit der Konstruktion INSERT INTO .... SELECT kannst du m.E. das ganze Nachführen der Relationstabelle in einer einzigen Query abarbeiten, wenn du die Wort-IDs zuvor "sammelst".
          mfg

          Kommentar


          • #6
            Also ich hab Wort nicht auf Unique aber auf Primary Key ist das auch in ordnung? Bzw. was ist der Unterschied zwischen PK und Unique??
            M.f.G. Tragon

            Kommentar


            • #7
              Klar, primary key geht auch (wozu hast du denn wort_id wenn das nicht primary key ist ?? )


              @CHnuschti: Stimmt ..
              Also so:

              PHP-Code:
              /**
              * Indizieren von Webseiten, hier sind die Wörter der Seite
              * im Array $woerter festgelegt und die seite_id = 1
              * Danach werden die Einträge verknüpft.
              */

              // Wörter, die im Inhalt der Seite 1) vorkommen .. hier kommt halt deine Routine hin
              $seite_id=1;
              $woerter=array("Wort1","Wort2");

              // Wörter einfügen
              mysql_query("REPLACE INTO worttabelle (wort) VALUES ('".implode("'),('",$woerter)."')");

              // verknüpfungen einfügen
              mysql_query("INSERT IGNORE INTO Wortseitenrelationstabelle (wort_id,seite_id) SELECT wort_id,'$seite_id' as seite_id FROM worttabelle WHERE wort IN('".implode("','",$woerter)."')");

              echo 
              "Seite indiziert."
              [color="#334D7B"]"Los, lass uns loslegen! Hm ? Quatschen können wir hinterher immer noch!"[/color]
              [color="#9C5245"]"Aber Bommel, wir können jetzt nicht bumsen. Wir müssen doch erst den Kindern - ... "[/color]
              [color="#334D7B"]"Ja ja ja. Du willst immer nur das Eine. Buchstabenzeigen, Buchstabenzeigen - meine Gefühle sind dir wohl scheißegal."[/color]

              © Harald Schmidt

              Kommentar


              • #8
                Sieht halt so aus ich sollte eine zentrale Werkzeugdatenbank machen für verschiedene Vetriebsfirmen! Ich habe eine Tabelle mit Werkzeuginfos wie Größe , Farbe und blabla angelegt. Und eine Tabelle mit den Firmen. In dieser tabelle ist enthalten ob das Werkzeug vorhanden ist oder nicht! Nun sollte ich aber das vorhanden sein und den Preis im Laden,den "allgemeinen" Werkzeug Informationen zu orden! Ist dies der richtige Weg! Das Problem ist ja das Werkzeug bei manchen Vetrieben noch da ist wo es bei anderen schon längst aus dem Programm geflogen ist!
                M.f.G. Tragon

                Kommentar


                • #9
                  Was bringt implode und ignore?
                  M.f.G. Tragon

                  Kommentar


                  • #10
                    INSERT IGNORE gibt keine Fehlermeldung zurück, wenn schon ein Datensatz mit diesem Primary Key besteht.

                    implode() fügt einen Array zu einem String zusammen. Die einzelnen Elemente werden durch ein benutzerdefiniertes Trennzeichen getrennt.

                    // gibt "wort1<>wort2" aus.
                    $array=array("wort1","wort2");
                    echo implode("<>",$array);
                    [color="#334D7B"]"Los, lass uns loslegen! Hm ? Quatschen können wir hinterher immer noch!"[/color]
                    [color="#9C5245"]"Aber Bommel, wir können jetzt nicht bumsen. Wir müssen doch erst den Kindern - ... "[/color]
                    [color="#334D7B"]"Ja ja ja. Du willst immer nur das Eine. Buchstabenzeigen, Buchstabenzeigen - meine Gefühle sind dir wohl scheißegal."[/color]

                    © Harald Schmidt

                    Kommentar

                    Lädt...
                    X