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

  • schnurzli
    hat ein Thema erstellt Insert fremdschlüssel.

    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

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

    Einen Kommentar schreiben:


  • schnurzli
    antwortet
    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....

    Einen Kommentar schreiben:


  • xabbuh
    antwortet
    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?

    Einen Kommentar schreiben:


  • schnurzli
    antwortet
    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...

    Einen Kommentar schreiben:


  • xabbuh
    antwortet
    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?

    Einen Kommentar schreiben:


  • schnurzli
    antwortet
    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...

    Einen Kommentar schreiben:


  • xabbuh
    antwortet
    Warum nimmst du nicht einfach den Wert der Variablen $persid?

    Einen Kommentar schreiben:


  • schnurzli
    antwortet
    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.....

    Einen Kommentar schreiben:


  • dsmcg
    antwortet
    schreiben, dann auslesen und den nächsten reinschreiben usw. ?

    Einen Kommentar schreiben:


  • schnurzli
    antwortet
    es handelt sich nicht um ein auto increment...

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

    Einen Kommentar schreiben:


  • xabbuh
    antwortet
    Wenn was nicht?

    Einen Kommentar schreiben:


  • schnurzli
    antwortet
    und wenn nicht *verzweifeltbin*

    Einen Kommentar schreiben:


  • xabbuh
    antwortet
    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.

    Einen Kommentar schreiben:

Lädt...
X