MySQL Insert über mehrere Tabellen

MarioW1986

Bekanntes Mitglied
HAllo zusammen, ich habe zwar schon versucht über google etwas herauszufinden, jedoch kam ich zu keinem zufriedenstellenden Ergebnis.
Ich habe zwei Tabellen in einer MySQL Datenbank. Diese sind über ein Fremdschlüssel miteinander verbunden. Die erste Tabelle enthält eine UserID sowie die BehandlungsID der anderen Tabelle als Fremdschlüssel. Jetzt möchte ich beispielsweise einen neuen User anlegen, zu dem parallel eine behandlung bzw die Bahenadlungseinträge gemacht werden. heißt eben beide tabellen beschrieben.

Kann mir jemand mal ein beispiel geben wie man in 2 tabellen schreibt? Muss nicht auf mein Beispiel passen. Nur damit ich mal den grundlegende Ablauf beim Schreiben in 2 Tabellen sehen kann.

Danke schonmal

MfG
 
Wird die UserID/BehandlungsID von der Datenbank generiert oder von dir festgelegt?

Aber im Prinzip: Du machst dein INSERT auf die BehandlungsTabelle. Entweder hast du die BehandlungsID schon in der Hand oder du musst dir von der DB die zuletzt erstellte ID holen und kannst diese bei dem 2ten INSERT verwenden.
 
Hallo, danke schon einmal für die schnelle Antwort. Die UserID ist bereits angelegt und die BehandlungsID wird zur Laufzeit erstellt. Heißt wenn im Programm eine Behandlung gestartet wird soll zu dem User eine Behandlung angelegt werden. In der Tabelle mit der UserID sind noch einige zusätzliche Infos die nur einmalig eingetragen werden. In der Behandlungstabelle werden jede Sekunde Daten geschrieben.

Könntest du mir dazu ein kurzes Beispiel geben? Ich habe grundlegend schon verstanden was du mir gesagt hast. Aber ich kann mir das anhand eines Beispiels besser vorstellen und übertragen wenn es nicht zu viele Umstände macht 🙂

Danke
 
Könntest du mir dazu ein kurzes Beispiel geben? Ich habe grundlegend schon verstanden was du mir gesagt hast. Aber ich kann mir das anhand eines Beispiels besser vorstellen und übertragen wenn es nicht zu viele Umstände macht 🙂

Ich weiß nicht wo das Problem liegt. Du hast eine Methode die ein INSERT auf die Tabelle Users durchführt. Und eine weitere Methode, welche ein INSERT auf die Tabelle Behandlungen durchführt.
Was für Pseudocode erwartest du dir?

Java:
public boolean insertUser(User user){
   PreparedStatement stmt = conn.getPreparedStatement(SQL_INSERT_USER);
   stmt.setString(1, ....);
   ......
   ......
   return stmt.execute();
}

Die UserID ist bereits angelegt und die BehandlungsID wird zur Laufzeit erstellt.
Heißt wenn im Programm eine Behandlung gestartet wird soll zu dem User eine Behandlung angelegt werden. In der Tabelle mit der UserID sind noch einige zusätzliche Infos die nur einmalig eingetragen werden. In der Behandlungstabelle werden jede Sekunde Daten geschrieben.

Wie schaut denn dein DB-Design aus? Und was hast du vor? Weil nach deiner Beschreibung willst du für einen User immer wieder eine Behandlung starten können (wenn vorherige beendet wurde). Aber laut der Beschreibung aus dem Anfangspost steht die BehandlungsID auf der Users Tabelle. Somit wäre pro User max 1 Behandlung möglich. Bzw. wenn diese ID geändert wird kannst du vorherige Behandlungen nicht mehr dem User zuordnen.
 
Hallo also im prinzip gibt es 3 tabellen, die user tabelle, die zwischentabelle in dem feste werte stehen und die bahndlungstabelle. die usertabelle ist gesetzt und die zwischentabelle und die behandlungstabelle sollen gefüllt werden. wie gesagt die userid ist bereits bekannt. ich wollte die sache nicht verkomplizieren. Ich wollte auch kein Java Code sonder neher wie die inserts angelegt werden.
 
Es ist immer besser zuviel als zuwenig Informationen heraus zugeben! 😉

Wie sollten die INSERTs denn angelegt sein?
SQL:
INSERT INTO [Tabelle]([Spalte1], [Spalte2], ..., [SpalteN]) VALUES ([Wert1], [Wert2], ..., [WertN]);
 
Ja das ist ja ein stinknormaler Insert 🙂 das kenn ich ja. Meine Frage ist eigentlich "nur" ob bzw wie das bei mehreren Tabellen aufgebaut ist oder mach ich das dann in dieser form?

(Quelle anderes <Forum)
INSERT INTO user (name)
VALUES ('John Smith');
INSERT INTO user_details (id, weight, height)
VALUES (LAST_INSERT_ID(),83, 185);
 
Ja so in der Art kann man es wahrscheinlich auch machen.

Da du aber diese "LAST_INSERTED_ID" wahrscheinlich auch im Programm brauchen wirst, solltest du zuerst das INSERT auf die User Tabelle machen und dann ein extra Select um die erstellte ID abzufragen. Mit dieser ID kannst du dann dein 2tes INSERT machen
 

Neue Themen


Zurück
Oben