Ankündigung

Einklappen
Keine Ankündigung bisher.

Insert fremdschlüssel

Einklappen

Neue Werbung 2019

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

  • Insert fremdschlüssel

    hi,

    ich versuche eine insert statement bei welchem ich in 3 tabellen gleichzeitig schreiben möchte.

    tabellea
    tabelleb
    tabellec

    tabellea hat eine id, welche ich in tabelleb und tabellec als tabellea_id
    stehen haben möchte. das heisst dies ist der fremdschlüssel.

    nur wie mache ich das beim insert?

    mfg schnurzli


  • #2
    Dafür schickst du nacheinander drei INSERT-Abfragen ab. Den erzeugten Primärschlüssel kannst du über LAST_INSERT_ID() ermitteln, falls es sich um eine auto_increment-Spalte handelt.

    Kommentar


    • #3
      und wenn nicht *verzweifeltbin*

      Kommentar


      • #4
        Wenn was nicht?

        Kommentar


        • #5
          es handelt sich nicht um ein auto increment...

          was gibt es denn für eine alternative lösung?

          Kommentar


          • #6
            schreiben, dann auslesen und den nächsten reinschreiben usw. ?
            Wie man Fragen richtig stellt

            Kommentar


            • #7
              Code:
              sql="INSERT INTO person (persid,name,geb) VALUES('$persid','$name','$geb');
              SELECT persid FROM person LEFT OUTER JOIN optional ON persfk = persid;
              INSERT INTO optional (???person.persid???, $hobby1,$hobby2) VALUES('???persfk???','$hobby1','$hobby2')";
              mysql_query($sql) or die;
              mein problem ist, dass ich nicht weiss wie ich das bewerkstellige, dass in die persfk der tabelle optional die persid der tabelle person eingefügt wird.....

              Kommentar


              • #8
                Warum nimmst du nicht einfach den Wert der Variablen $persid?

                Kommentar


                • #9
                  hab das beispiel leiderfalsch geschrieben

                  ich habe die ausgangssituation,dass ich ein paar foreign keys verwenden möchte. ausserdem befinden sich alle spalten beider tabellen in einer csv datei. dies habe ich mit einem array_slice geteilt.

                  die tabellenstruktur:
                  in der tabelle person gibt es die persid-> die soll dann in der anderen tabelle "hobby" als persfk erscheinen. wie mach ich es, um zuerst den insert in die tabelle person zu tätigen und danach wiederum die persid auszulesen, um die daten zu der jeweiligen person in hobby zu haben.

                  ich bin mit meinem latein am ende - hab jetzt den ganzen tag versucht, eine lösung zu finden...

                  Kommentar


                  • #10
                    Zitat von schnurzli
                    in der tabelle person gibt es die persid-> die soll dann in der anderen tabelle "hobby" als persfk erscheinen. wie mach ich es, um zuerst den insert in die tabelle person zu tätigen und danach wiederum die persid auszulesen, um die daten zu der jeweiligen person in hobby zu haben.
                    Woher bekommt die Tabelle person denn überhaupt einen Wert für die Spalte persid?

                    Kommentar


                    • #11
                      eigentlich ist es eine sql datenbank auf die ich mit mssql per php zugreife - aber der code ist ziemlich gleich. deshalb habe ich es im mysql forum probiert. ich habe eine csv-datei in der 10 spalten stehen, die ersten 5 sind für die tabelle personen, die anderen für die 2. tabelle. die id von "personen" wird automatisch am sql-server nach eintrag der einzelnen personen erstellt. und da möchte ich sie wieder auslesen und dann mit einem insert den rest der csv datei in tabelle 2 in der sql -db schreiben...

                      Kommentar


                      • #12
                        Zitat von schnurzli
                        die id von "personen" wird automatisch am sql-server nach eintrag der einzelnen personen erstellt. und da möchte ich sie wieder auslesen und dann mit einem insert den rest der csv datei in tabelle 2 in der sql -db schreiben...
                        Also doch auto_increment? Oder wie nennt sich das bei MSSQL?

                        Kommentar


                        • #13
                          ja aber in der bezeichnung des typs stand nicht auto_increment... bei anderen typen schon (int...)

                          doch funktioniert die funktion LAST_INSERT_ID() in mssql anscheinend nicht - bei mysql schon....

                          Kommentar


                          • #14
                            Dann müsstest du mal schauen, ob MSSQL eine ähnliche Funktion bietet und ansonsten eben den höchsten Wert für diese Spalte ermitteln.

                            Kommentar

                            Lädt...
                            X